2017-05-09 8 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

このdatetimeは、中時間に2回存在します。 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'より)あいまいなフラグにTrueを渡し:

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を設定すると、問題が発生している少数の行のタイムゾーンが追加されます。うーん、私はそれがうまくいくと思う - 私はそれが重要であることを疑う。私が取り組んでいたもう1つの選択肢は、 '%z'の 'utc_offset'という別の列を追加することでしたが、あいまい= 'NaT'なので、問題がある場合はutc_offset列は空白です。 – trench

+1

@trenchポイントはあなたが実際の時間(その時のタイムゾーン_isあいまいなので)を知らないこれらの時です、最も可能性が高いのは、1つを選ぶことです! :) –

関連する問題