1 回答

TA貢獻1794條經(jīng)驗 獲得超7個贊
如果您的輸入是 UTC 但尚未設(shè)置 UTC,您可以先本地化為 UTC,例如:
df['timestamp'] = df['timestamp'].dt.tz_localize('UTC')
如果您的輸入已經(jīng)轉(zhuǎn)換為 UTC,您可以簡單地tz_convert,例如:
s = pd.Series(pd.to_datetime(['2020-10-25 00:40:03.925000',
'2020-10-25 01:40:03.925000',
'2020-10-25 02:40:03.925000'], utc=True))
s.dt.tz_convert('Europe/Berlin')
# 0 2020-10-25 02:40:03.925000+02:00
# 1 2020-10-25 02:40:03.925000+01:00
# 2 2020-10-25 03:40:03.925000+01:00
# dtype: datetime64[ns, Europe/Berlin]
如果您輸入的時間戳代表當(dāng)?shù)貢r間(此處:歐洲/柏林時區(qū)),您可以嘗試根據(jù)順序推斷 DST 轉(zhuǎn)換:
s = pd.Series(pd.to_datetime(['2020-10-25 02:40:03.925000',
'2020-10-25 02:40:03.925000',
'2020-10-25 03:40:03.925000']))
s.dt.tz_localize('Europe/Berlin', ambiguous='infer')
# 0 2020-10-25 02:40:03.925000+02:00
# 1 2020-10-25 02:40:03.925000+01:00
# 2 2020-10-25 03:40:03.925000+01:00
# dtype: datetime64[ns, Europe/Berlin]
注:CET不是地理意義上的時區(qū)。由于歷史原因,pytz 可以處理其中一些,但不要指望它。無論如何,它可能會為您提供靜態(tài) tz 偏移量 - 如果您希望它包含 DST 轉(zhuǎn)換,那么這不是您想要的。
添加回答
舉報