庞大的时间错误熊猫

时间:2017-05-09 20:18:33

标签: python-3.x pandas

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-02 01:02:14

这些时间戳来自csv文件,该文件不包含时区。我想在加载到我的数据库之前添加时区,如果可能的话。有没有我做错的代码含糊不清的部分?我仍然收到错误。

1 个答案:

答案 0 :(得分:4)

此日期时间在中央时间存在两次,例如见here

  

2014年11月2日 - 夏令时结束
  当地日光时间即将到达时   2014年11月2日星期日凌晨2:00:00时钟倒转1小时到   2014年11月2日星期日,当地标准时间凌晨1:00:00   2014年11月2日的日出和日落比前一天早1小时左右。早上有更多的光线。

如果这些实际上是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]

或将True传递给不明确的标志(而不是'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]