Datetime, Timestamp ve datetime64 arasında dönüştürme


292

Bir numpy.datetime64nesneyi datetime.datetime(veya Timestamp) haline nasıl dönüştürebilirim ?

Aşağıdaki kodda, datetime, zaman damgası ve datetime64 nesneleri oluşturun.

import datetime
import numpy as np
import pandas as pd
dt = datetime.datetime(2012, 5, 1)
# A strange way to extract a Timestamp object, there's surely a better way?
ts = pd.DatetimeIndex([dt])[0]
dt64 = np.datetime64(dt)

In [7]: dt
Out[7]: datetime.datetime(2012, 5, 1, 0, 0)

In [8]: ts
Out[8]: <Timestamp: 2012-05-01 00:00:00>

In [9]: dt64
Out[9]: numpy.datetime64('2012-05-01T01:00:00.000000+0100')

Not: Tarih saatini Zaman Damgası'ndan almak kolaydır:

In [10]: ts.to_datetime()
Out[10]: datetime.datetime(2012, 5, 1, 0, 0)

Ama nasıl ayıklamak datetimeveya Timestampbir den numpy.datetime64( dt64)?

.

Güncelleme: veri setimdeki (belki de motive edici örnek) biraz kötü bir örnek gibi görünüyor:

dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100')

bu olmalı datetime.datetime(2002, 6, 28, 1, 0)ve uzun değil (!) ( 1025222400000000000L) ...


2
muhtemelen kabul etmelidir @Wes McKinney yanıtını çok daha kısadır ve son çalışması gerekir numpy, pandassürümleri.
jfs

@JFSebastian Hmmm, bu sorunun cevabı "np.datetime'dan datetime'a geçmeyin" anlamına gelir mi ... sadece pd.Timestamp kullanın (zaten datetime'nin bir alt sınıfı olduğu için) veya gerçekten kullanmanız gerekiyorsa pd.Timestamp(dt64).to_datetime(). Ben hala bu konuda biraz memnun değilim, ama kesinlikle Wes 'benim eski sorunum için daha az spesifik (ve dünya için çok daha iyi)! Yanıtlamak için zaman ayırdığınız için tekrar teşekkür ederiz. :)
Andy Hayden

Sorunuz diyor "veya Timestamp" ve Timestampbir olduğunu datetime:) neyse (bir alt sınıf)
jfs

3
2017 ve sonrasında bu soruya gelenler için datetime, datetime64 ve Timestamps'ın ayrıntılı bir öğreticisi için aşağıdaki cevabıma bakın: stackoverflow.com/a/46921593/3707607
Ted Petrou

Yanıtlar:


133

numpy.datetime64UTC'de saati temsil eden datetime nesnesine dönüştürmek için numpy-1.8:

>>> from datetime import datetime
>>> import numpy as np
>>> dt = datetime.utcnow()
>>> dt
datetime.datetime(2012, 12, 4, 19, 51, 25, 362455)
>>> dt64 = np.datetime64(dt)
>>> ts = (dt64 - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')
>>> ts
1354650685.3624549
>>> datetime.utcfromtimestamp(ts)
datetime.datetime(2012, 12, 4, 19, 51, 25, 362455)
>>> np.__version__
'1.8.0.dev-7b75899'

Yukarıdaki örnek, naif bir datetime nesnesinin np.datetime64UTC cinsinden zaman olarak yorumlandığını varsayar .


Tarih saatini np.datetime64 ve back ( numpy-1.6) biçimine dönüştürmek için :

>>> np.datetime64(datetime.utcnow()).astype(datetime)
datetime.datetime(2012, 12, 4, 13, 34, 52, 827542)

Hem tek bir np.datetime64 nesnesinde hem de np.datetime64'ün numpy dizisinde çalışır.

Np.datetime64'ü np.int8, np.int16, vb. Gibi düşünün ve int, datetime ve karşılık gelen numpy nesneleri gibi Python nesneleri arasında dönüştürme yapmak için aynı yöntemleri uygulayın.

"Kötü örneğiniz" düzgün çalışıyor:

>>> from datetime import datetime
>>> import numpy 
>>> numpy.datetime64('2002-06-28T01:00:00.000000000+0100').astype(datetime)
datetime.datetime(2002, 6, 28, 0, 0)
>>> numpy.__version__
'1.6.2' # current version available via pip install numpy

Yüklü olarak longdeğeri çoğaltabilir numpy-1.8.0:

pip install git+https://github.com/numpy/numpy.git#egg=numpy-dev

Aynı örnek:

>>> from datetime import datetime
>>> import numpy
>>> numpy.datetime64('2002-06-28T01:00:00.000000000+0100').astype(datetime)
1025222400000000000L
>>> numpy.__version__
'1.8.0.dev-7b75899'

Bu döner longiçin çünkü numpy.datetime64tipi .astype(datetime)eşdeğerdir .astype(object)o döner Python tamsayı ( longüzerine) numpy-1.8.

Datetime nesnesini almak için şunları yapabilirsiniz:

>>> dt64.dtype
dtype('<M8[ns]')
>>> ns = 1e-9 # number of seconds in a nanosecond
>>> datetime.utcfromtimestamp(dt64.astype(int) * ns)
datetime.datetime(2002, 6, 28, 0, 0)

Doğrudan saniyeleri kullanan datetime64'ü almak için:

>>> dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100', 's')
>>> dt64.dtype
dtype('<M8[s]')
>>> datetime.utcfromtimestamp(dt64.astype(int))
datetime.datetime(2002, 6, 28, 0, 0)

Numpy dokümanlar datetime API deneysel ve gelecekteki numpy sürümlerinde değişebilir söylüyorlar.


1
Korkarım bu her zaman işe yaramaz gibi görünüyor: örneğin dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100'), uzun bir ( 1025222400000000000L) (!)
Andy Hayden

@hayden: dene type(dt64). dt64.astype(datetime) == datetime.utcfromtimestamp(dt64.astype(int)*1e-6)
jfs

@JFSebastian type(dt64)olduğunu numpy.datetime64ve dt64.astype(datetime)aynı uzun int ...: s
Andy Hayden

@hayden: Numpy versiyonunuz nedir? Mine: numpy.__version__->'1.6.1'
jfs

Sürüm 1.8.0 (python 2.7.3'te), sizin için çalışıyorsa, sistemimde bir hata olduğunu gösteriyor!
Andy Hayden

212

Sadece pd.Timestamp yapıcısını kullanabilirsiniz. Aşağıdaki şema bu ve ilgili sorular için yararlı olabilir.

Zaman gösterimleri arasındaki dönüşümler


2
Güzel!!! (Bu soruyu yazdığımdan beri durumun düzeldiğinden bahsetmeye değer, burada bir sürü iş yapıldı :))
Andy Hayden

107
Sadece bu şemaya bakmak bana tüm bu zamanlar için temelde yanlış bir şey olduğunu söylüyor.
demanslı kirpi

4
Ms veya ns sayısı verilirse pd.to_datetime öğesinin bir TimeStamp üretmesi, ancak bir datetime.datetime veya np.datetime64 verilirse nt.datetime64 vermesi bir datetime.datetime üretmesi çok kafa karıştırıcıdır. bunun makul olduğunu mu düşünüyorsun?
Mr.WorshipMe

7
@ Mr.WorshipMe Bu diyagramın güncellenmesi gerekiyor. pd.to_datetimeher şeyi dönüştürür pd.Timestamp. Bir pd.Timestampnesne yöntemi vardır to_pydatetimebir geri dönmek için datetime.datetimenesne ve bir to_datetime64dönüştürmek yöntem np.datetime64.
Ted Petrou

2
Bu resmin daha yüksek bir çözünürlüğünü nasıl alabilirim?
user3226167

137

Cehenneme hoşgeldin.

Sadece bir datetime64 nesnesini şunlara iletebilirsiniz pandas.Timestamp:

In [16]: Timestamp(numpy.datetime64('2012-05-01T01:00:00.000000'))
Out[16]: <Timestamp: 2012-05-01 01:00:00>

Bu NumPy 1.6.1 olsa doğru çalışmadığını fark ettim:

numpy.datetime64('2012-05-01T01:00:00.000000+0100')

Ayrıca, pandas.to_datetimekullanılabilir (bu dev sürümü kapalı, v0.9.1 kontrol etmedi):

In [24]: pandas.to_datetime('2012-05-01T01:00:00.000000+0100')
Out[24]: datetime.datetime(2012, 5, 1, 1, 0, tzinfo=tzoffset(None, 3600))

5
Bunu belirtmeliyiz issubclass(pd.Timestamp, datetime)olduğunu True. Ve Timestampsınıfın kendisinin bir to_datetime()yöntemi vardır.
jfs

7
pd.to_datetime('2012-05-01T01:00:00.000000+0100')Timestamp('2012-05-01 00:00:00')en azından pandalarla döner 0.17.1.
Anton Protopopov

97

Python'un datetime modülü, numpy'nin datetime64 / timedelta64 ve pandaların Zaman Damgası / Timedelta nesneleri arasındaki ilişkiyi daha iyi açıklamak için daha sağlam bir çaba olabileceğini düşünüyorum.

Python'un datetime standart kütüphanesi

Datetime standart kitaplığında dört ana nesne bulunur

  • zaman - sadece zaman, saat, dakika, saniye ve mikrosaniye olarak ölçülür
  • tarih - yalnızca yıl, ay ve gün
  • datetime - Zamanın ve tarihin tüm bileşenleri
  • timedelta - Maksimum gün birimi ile süre

Bu dört nesneyi oluştur

>>> import datetime
>>> datetime.time(hour=4, minute=3, second=10, microsecond=7199)
datetime.time(4, 3, 10, 7199)

>>> datetime.date(year=2017, month=10, day=24)
datetime.date(2017, 10, 24)

>>> datetime.datetime(year=2017, month=10, day=24, hour=4, minute=3, second=10, microsecond=7199)
datetime.datetime(2017, 10, 24, 4, 3, 10, 7199)

>>> datetime.timedelta(days=3, minutes = 55)
datetime.timedelta(3, 3300)

>>> # add timedelta to datetime
>>> datetime.timedelta(days=3, minutes = 55) + \
    datetime.datetime(year=2017, month=10, day=24, hour=4, minute=3, second=10, microsecond=7199)
datetime.datetime(2017, 10, 27, 4, 58, 10, 7199)

NumPy'nin datetime64 ve timedelta64 nesneleri

NumPy'nin ayrı bir tarih ve saat nesnesi yoktur, yalnızca tek bir anı temsil eden tek bir datetime64 nesnesi vardır. Datetime modülünün datetime nesnesi mikrosaniye hassasiyetine sahiptir (saniyenin milyonda biri). NumPy'nin datetime64 nesnesi, hassasiyetini saatten sonuna kadar ayarlamanızı sağlar (10 ^ -18). Yapıcısı daha esnektir ve çeşitli girdiler alabilir.

NumPy'nin datetime64 ve timedelta64 nesnelerini oluşturma

Birimler için dize içeren bir tam sayı iletin. Tüm birimleri burada görebilirsiniz . UNIX döneminden sonra bu birçok birime dönüştürülür: 1 Oca 1970

>>> np.datetime64(5, 'ns') 
numpy.datetime64('1970-01-01T00:00:00.000000005')

>>> np.datetime64(1508887504, 's')
numpy.datetime64('2017-10-24T23:25:04')

Dizeleri ISO 8601 biçiminde oldukları sürece de kullanabilirsiniz.

>>> np.datetime64('2017-10-24')
numpy.datetime64('2017-10-24')

Zaman çizelgelerinin tek bir birimi var

>>> np.timedelta64(5, 'D') # 5 days
>>> np.timedelta64(10, 'h') 10 hours

Ayrıca iki datetime64 nesnesini çıkararak bunları oluşturabilir

>>> np.datetime64('2017-10-24T05:30:45.67') - np.datetime64('2017-10-22T12:35:40.123')
numpy.timedelta64(147305547,'ms')

Pandas Timestamp ve Timedelta, NumPy'nin üzerine çok daha fazla işlevsellik kazandırıyor

Bir pandalar Zaman Damgası, datetime'a çok benzer, ancak çok daha fazla işlevselliğe sahip bir andır. Bunlardan birini pd.Timestampveya ile oluşturabilirsiniz pd.to_datetime.

>>> pd.Timestamp(1239.1238934) #defautls to nanoseconds
Timestamp('1970-01-01 00:00:00.000001239')

>>> pd.Timestamp(1239.1238934, unit='D') # change units
Timestamp('1973-05-24 02:58:24.355200')

>>> pd.Timestamp('2017-10-24 05') # partial strings work
Timestamp('2017-10-24 05:00:00')

pd.to_datetime çok benzer şekilde çalışır (birkaç seçenekle birlikte) ve bir dize listesini Zaman Damgalarına dönüştürebilir.

>>> pd.to_datetime('2017-10-24 05')
Timestamp('2017-10-24 05:00:00')

>>> pd.to_datetime(['2017-1-1', '2017-1-2'])
DatetimeIndex(['2017-01-01', '2017-01-02'], dtype='datetime64[ns]', freq=None)

Python tarih saatini datetime64 ve Zaman damgasına dönüştürme

>>> dt = datetime.datetime(year=2017, month=10, day=24, hour=4, 
                   minute=3, second=10, microsecond=7199)
>>> np.datetime64(dt)
numpy.datetime64('2017-10-24T04:03:10.007199')

>>> pd.Timestamp(dt) # or pd.to_datetime(dt)
Timestamp('2017-10-24 04:03:10.007199')

Numpy datetime64 değerini datetime ve Timetamp'a dönüştürme

>>> dt64 = np.datetime64('2017-10-24 05:34:20.123456')
>>> unix_epoch = np.datetime64(0, 's')
>>> one_second = np.timedelta64(1, 's')
>>> seconds_since_epoch = (dt64 - unix_epoch) / one_second
>>> seconds_since_epoch
1508823260.123456

>>> datetime.datetime.utcfromtimestamp(seconds_since_epoch)
>>> datetime.datetime(2017, 10, 24, 5, 34, 20, 123456)

Zaman Damgasına Dönüştür

>>> pd.Timestamp(dt64)
Timestamp('2017-10-24 05:34:20.123456')

Dönüştürmek Zaman Damgası dan datetime ve datetime64

Panda zaman damgaları çok güçlü olduğu için bu oldukça kolaydır

>>> ts = pd.Timestamp('2017-10-24 04:24:33.654321')

>>> ts.to_pydatetime()   # Python's datetime
datetime.datetime(2017, 10, 24, 4, 24, 33, 654321)

>>> ts.to_datetime64()
numpy.datetime64('2017-10-24T04:24:33.654321000')

3
Tarih saatinin hala zor / huysuz olması çılgınca ... gerçekten daha iyi bir yol yok mu? Bu iyi bir cevap, diğerlerini bir bilgisayar tarafından bir kez daha derinlemesine okumam gereken en üst seviyeye taşımayı kabul etmeyi düşünüyorum.
Andy Hayden

Bu kadar ilginç olan ne? Pandalar Zaman Damgaları iyi çalışır ve oldukça basittir.
Ted Petrou

2
Tarih-saat kadar.
Andy Hayden

1
Bence bu şimdiye kadar gördüğüm en iyi cevap. Excel, VBA, SAS veya SQL'den gelen Python, garip görünüyor çünkü tarihler / saatler ile çalışmak için sadece "tek bir yol" yok. Python veya R'deki birçok şeyde olduğu gibi, bir favori yöntem / modül / sınıf seçmeli ve buna bağlı kalmalıdır.
Sean McCarthy

Şaşırtıcı ansewer
gioxc88

29
>>> dt64.tolist()
datetime.datetime(2012, 5, 1, 0, 0)

İçin DatetimeIndex, nesnelerin tolistlistesini döndürür datetime. Tek bir datetime64nesne için tek bir nesne döndürür datetime.


Gerçekten tüm yöntemleri denemeliydim :) (Bununla ne kadar uzun süre boğuştuğumda şok oldum) Teşekkürler
Andy Hayden

5
@hayden onun skaler / 0-d dizi yerine .item()çok daha açık olan kullanmak istiyorum (ve kimse gelip bir liste dönmesi gerektiğini savunarak başlayabilirsiniz) biliyorum.
seberg

1
Korkarım bu her zaman işe yaramaz gibi görünüyor: örneğin dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100'), uzun bir ( 1025222400000000000L) (!)
Andy Hayden

4
@hayden: tarafından döndürülen .item()(@seberg tarafından önerilen) tür, .tolist()datetime64'ün hangi birimleri kullandığına, örneğin Dürettiğine datetime.date(), us(mikrosaniye) ürettiğine datetime.datetime(), ns(nanosaniye) ürettiğine bağlıdır long. Birimler girdi değerlerine göre değişir, örneğin, numpy.datetime64('2012-05-01')kullanır 'D', numpy.datetime64('2012-05-01T00:00:00.000')kullanır ms, numpy.datetime64('2012-05-01T00:00:00.000000000')kullanır ns. Sen olabilir bir sorunu açmak bunu kafa karıştırıcı bulursanız.
jfs

Ayrıca, sadece ToList () üretildiğini aynı datetime elemanı ile sonuçlanan uygulanan aynı biçimi sağlamak için fazladan bir argüman, 'bize' veya 'ms' ekleyebilirsiniz @AndyHayden
NM

11

Tüm panda serilerinin tamamını normal python tarihlerine dönüştürmek istiyorsanız, kullanabilirsiniz .to_pydatetime().

pd.date_range('20110101','20110102',freq='H').to_pydatetime()

> [datetime.datetime(2011, 1, 1, 0, 0) datetime.datetime(2011, 1, 1, 1, 0)
   datetime.datetime(2011, 1, 1, 2, 0) datetime.datetime(2011, 1, 1, 3, 0)
   ....

Zaman dilimlerini de destekler:

pd.date_range('20110101','20110102',freq='H').tz_localize('UTC').tz_convert('Australia/Sydney').to_pydatetime()

[ datetime.datetime(2011, 1, 1, 11, 0, tzinfo=<DstTzInfo 'Australia/Sydney' EST+11:00:00 DST>)
 datetime.datetime(2011, 1, 1, 12, 0, tzinfo=<DstTzInfo 'Australia/Sydney' EST+11:00:00 DST>)
....

NOT : Bir Panda Serisi to_pydatetime()üzerinde çalışıyorsanız, tüm seri için arama yapamazsınız . .to_pydatetime()Bir liste kavrayışı veya benzer bir şey kullanarak her bir datetime64 öğesini çağırmanız gerekir :

datetimes = [val.to_pydatetime() for val in df.problem_datetime_column]

10

Bir seçenek kullanmaktır strve sonra to_datetime(veya benzeri):

In [11]: str(dt64)
Out[11]: '2012-05-01T01:00:00.000000+0100'

In [12]: pd.to_datetime(str(dt64))
Out[12]: datetime.datetime(2012, 5, 1, 1, 0, tzinfo=tzoffset(None, 3600))

Not: e eşit değildir dto hale geldi çünkü "bilinçli offset" :

In [13]: pd.to_datetime(str(dt64)).replace(tzinfo=None)
Out[13]: datetime.datetime(2012, 5, 1, 1, 0)

Bu yetersiz görünüyor.

.

Güncelleme: Bu "kötü örnek" ile başa çıkabilir:

In [21]: dt64 = numpy.datetime64('2002-06-28T01:00:00.000000000+0100')

In [22]: pd.to_datetime(str(dt64)).replace(tzinfo=None)
Out[22]: datetime.datetime(2002, 6, 28, 1, 0)

Andy bu ipucunu paylaştığın için teşekkürler. Bazı nedenlerden dolayı, burada tartıştığım gibi, çalışmasını sağlayamıyorum: stackoverflow.com/questions/22825349/…
Amelio Vazquez-Reina

@ user815423426 bu asla çok sağlam bir çözüm değildi, sanırım daha genel çalışmak için datetime yapıcısına bir biçim iletebilirsiniz. Gerçi çok pandastik değil!
Andy Hayden

8

Bu yazı 4 yıldır var ve bu dönüşüm sorunuyla hala mücadele ediyorum - bu nedenle konu 2017'de bir anlamda hala aktif. Numpy belgelerinin kolayca basit bir dönüşüm algoritması sunmadığı için biraz şaşırdım ama bu başka bir hikaye.

Ben sadece modülleri içeren dönüşüm yapmak için başka bir yolla karşılaştım numpyve datetime, bu kadar basit bir dönüşüm için ithal etmek için kod bir sürü gibi görünüyor pandaların ithal gerektirmez. O fark datetime64.astype(datetime.datetime)bir döner datetime.datetimeorijinal durumunda nesne datetime64olan mikro saniyelik birimler diğer birimler arasında bir tamsayıdır zaman damgası dönerken. Ben ilk mikro saniye birimleri dönüştürmek sürece dönüşüm başarısız yapma nanosaniye birimleri xarraykullanan Netcdf dosyalarından veri G / Ç için modül kullanın datetime64. İşte örnek dönüşüm kodu,

import numpy as np
import datetime

def convert_datetime64_to_datetime( usert: np.datetime64 )->datetime.datetime:
    t = np.datetime64( usert, 'us').astype(datetime.datetime)
return t

Sadece 2017 Anaconda dağıtımı ile Python 3.6 olan makinemde test edildi. Ben sadece skaler dönüşüm baktım ve iyi olacağını tahmin rağmen dizi tabanlı dönüşümleri kontrol etmedim. İşlemin anlamlı olup olmadığını görmek için numpy datetime64 kaynak koduna da bakmadım.


Bu harika. Bunu yaptığınız için teşekkür ederim.
Yu Chen

İyi şeyler. Teşekkür ederim.
misantroop

1

Bu cevaba sayabildiğimden daha fazla geri döndüm, bu yüzden Numpy datetime64değerini Python datetimedeğerine dönüştüren hızlı bir küçük sınıfı bir araya getirmeye karar verdim . Umarım başkalarına yardım eder.

from datetime import datetime
import pandas as pd

class NumpyConverter(object):
    @classmethod
    def to_datetime(cls, dt64, tzinfo=None):
        """
        Converts a Numpy datetime64 to a Python datetime.
        :param dt64: A Numpy datetime64 variable
        :type dt64: numpy.datetime64
        :param tzinfo: The timezone the date / time value is in
        :type tzinfo: pytz.timezone
        :return: A Python datetime variable
        :rtype: datetime
        """
        ts = pd.to_datetime(dt64)
        if tzinfo is not None:
            return datetime(ts.year, ts.month, ts.day, ts.hour, ts.minute, ts.second, tzinfo=tzinfo)
        return datetime(ts.year, ts.month, ts.day, ts.hour, ts.minute, ts.second)

Bunu alet çantamda tutacağım, bir şey bana tekrar ihtiyacım olacağını söylüyor.


2
Yapabilirsints.to_pydatetime()
Ted Petrou

0
import numpy as np
import pandas as pd 

def np64toDate(np64):
    return pd.to_datetime(str(np64)).replace(tzinfo=None).to_datetime()

piton yerel datetime nesnesi almak için bu işlevi kullanın


Bir hata replace() got an unexpected keyword argument 'tzinfo'
mesajı

hangi pandalar sürümünü kullanıyorsunuz? Sürüm: 0.18.1 (pip show pandaları)
Crystal

seninle aynı. . .
ogogmad

O zaman bilmiyorum ama benim için cazibe gibi çalışıyor. pix.toile-libre.org/upload/original/1475645621.png
Kristal

0

Bazı çözümler benim için iyi çalışıyor ancak numpy bazı parametreleri kullanımdan kaldırıyor. Benim için daha iyi olan çözüm, tarihi pandaların tarih olarak okumak ve panda nesnesinin yılını, ayını ve gününü açıkça dışlamaktır. Aşağıdaki kod en yaygın durum için çalışır.

def format_dates(dates):
    dt = pd.to_datetime(dates)
    try: return [datetime.date(x.year, x.month, x.day) for x in dt]    
    except TypeError: return datetime.date(dt.year, dt.month, dt.day)

-1

Gerçekten de, bu tarih-saat türlerinin tümü zor ve potansiyel olarak sorunlu olabilir (saat dilimi bilgilerinin dikkatlice izlenmesi gerekir). işte yaptığım şey, bunun en azından bir kısmının "tasarım değil" olduğundan endişe duyduğumu itiraf ediyorum. ayrıca, bu gerektiğinde biraz daha kompakt hale getirilebilir. bir numpy.datetime64 dt_a ile başlayarak:

dt_a

numpy.datetime64 ( '2015-04-24T23: 11: 26,270000-0.700')

dt_a1 = dt_a.tolist () #, UTC'de ancak tzinfo içermeyen bir datetime nesnesi verir

dt_a1

datetime.datetime (2015, 4, 25, 6, 11, 26, 270000)

# now, make your "aware" datetime:

dt_a2 = datetime.datetime (* liste (dt_a1.timetuple () [: 6]) + [dt_a1.microsecond], tzinfo = pytz.timezone ('UTC'))

... ve tabii ki, bu gerektiği gibi tek bir hatta sıkıştırılabilir.


saat dilimi kullanımındaki değişiklikler için docs.scipy.org/doc/numpy/reference/… .
hpaulj

Lütfen editaşağıdakilere uyun: kod biçimlendirme, fiyat teklifi biçimlendirme ve metin biçimlendirme. Ayrıca, SO yönergelerine göre uygun büyük harf, gramer ve yazım hatalarını kontrol edin - bakınız: Nasıl Gönderilir ve Kod Örnekleri
SherylHohman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.