2017-05-09 64 views
2
df['first_timestamp'] = pd.to_datetime(df['first_timestamp']).dt.tz_localize('US/Central', ambiguous='infer') 
df['second_timestamp'] = pd.to_datetime(df['second_timestamp']).dt.tz_localize('US/Central', ambiguous='infer') 

AmbiguousTimeError:2014年11月2日1時02分14秒曖昧時錯誤大熊貓

這些時間戳是來自不包括時區csv文件。如果可能,我想在將它加載到我的數據庫之前添加時區。有沒有我做錯了代碼的模糊部分?我仍然收到錯誤。

回答

3

該日期時間在中央時間存在兩次,例如,看到here

Nov 2, 2014 - Daylight Saving Time Ended
When local daylight time was about to reach
Sunday, November 2, 2014, 2:00:00 am clocks were turned backward 1 hour to
Sunday, November 2, 2014, 1:00:00 am local standard time instead
Sunrise and sunset was about 1 hour earlier on Nov 2, 2014 than the day before. There was more light in the morning.

如果這些實際上是UTC,你應該從UTC本地化:

In [11]: pd.Series([pd.Timestamp("2014-11-02 01:02:14 UTC")]).dt.tz_convert('US/Central') 
Out[11]: 
0 2014-11-01 20:02:14-05:00 
dtype: datetime64[ns, US/Central] 

或傳真到了模棱兩可的標誌(而不是'infer')只選擇一個:

In [12]: pd.Series([pd.Timestamp("2014-11-02 01:02:14")]).dt.tz_localize('US/Central', ambiguous=True) 
Out[12]: 
0 2014-11-02 01:02:14-05:00 
dtype: datetime64[ns, US/Central] 
+0

實際數據是(或應該)在中央時間,所以我無法從UTC本地化。通過設置True,這會爲那些有問題的行添加時區?嗯,我想這可以工作 - 我懷疑這很重要。另外一個選項是我添加另一個名爲'utc_offset'的'%z',但是ambiguous ='NaT',所以如果有問題,utc_offset列是空白的。 – trench

+1

@trench重點是在這些時候你不知道實際的時間(因爲那個時候的時區_s_ ambigious),最有可能的最好的辦法就是挑一個! :) –