tz_localize
Bir Zaman Damgası veya DateTimeIndex zaman diliminin farkında olmasını sağlamak için işlevi kullanabilirsiniz , ancak bunun tersini nasıl yapabilirsiniz: Zaman dilimi farkında olan bir Zaman Damgasını zaman dilimini korurken nasıl saf bir zamana dönüştürebilirsiniz?
Bir örnek:
In [82]: t = pd.date_range(start="2013-05-18 12:00:00", periods=10, freq='s', tz="Europe/Brussels")
In [83]: t
Out[83]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]
Length: 10, Freq: S, Timezone: Europe/Brussels
Saat dilimini Yok olarak ayarlayarak kaldırabilirim, ancak sonuç UTC'ye dönüştürülür (saat 12, 10 oldu):
In [86]: t.tz = None
In [87]: t
Out[87]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 10:00:00, ..., 2013-05-18 10:00:09]
Length: 10, Freq: S, Timezone: None
DateTimeIndex'i saf saat dilimine dönüştürebilmemin başka bir yolu var mı, ancak ayarlandığı saat dilimini korurken?
Bazı bağlam nedenine bu soruyorum: Ben zaman dilimi naif timeseries ile çalışmak istiyoruz (saat dilimine sahip ekstra güçlük önlemek için, ben üzerinde çalışıyorum vaka için onlara ihtiyacımız yok).
Ancak bazı nedenlerden dolayı, yerel zaman dilimimde (Avrupa / Brüksel) saat dilimine duyarlı bir zaman serisiyle uğraşmak zorundayım. Diğer tüm verilerim zaman diliminde saf olduğundan (ancak yerel saat dilimimde temsil edildiğinden), bu zaman serisini onunla daha fazla çalışmak için naif hale getirmek istiyorum, ancak aynı zamanda yerel saat dilimimde de temsil edilmesi gerekiyor (bu nedenle sadece saat dilimi bilgilerini kaldırın, kullanıcının gördüğü zamanı UTC'ye dönüştürmeden ).
Zamanın aslında UTC olarak dahili olarak saklandığını ve sadece siz onu temsil ettiğinizde başka bir zaman dilimine dönüştürüldüğünü biliyorum, bu yüzden onu "yerelleştirmek" istediğimde bir tür dönüşüm olmalı. Örneğin, python datetime modülü ile saat dilimini şu şekilde "kaldırabilirsiniz":
In [119]: d = pd.Timestamp("2013-05-18 12:00:00", tz="Europe/Brussels")
In [120]: d
Out[120]: <Timestamp: 2013-05-18 12:00:00+0200 CEST, tz=Europe/Brussels>
In [121]: d.replace(tzinfo=None)
Out[121]: <Timestamp: 2013-05-18 12:00:00>
Dolayısıyla, buna dayanarak aşağıdakileri yapabilirim, ancak bunun daha büyük zaman serileriyle çalışırken çok verimli olmayacağını düşünüyorum:
In [124]: t
Out[124]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]
Length: 10, Freq: S, Timezone: Europe/Brussels
In [125]: pd.DatetimeIndex([i.replace(tzinfo=None) for i in t])
Out[125]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]
Length: 10, Freq: None, Timezone: None