长数据框的Python Pandas超出日期时间时间戳错误

时间:2018-10-17 06:07:46

标签: python pandas datetime timestamp

我有一个数据框df,形状为(500000,70),几列包括无效日期,例如4000-01-01 00:00:00。在此数据框的较小版本中,我尝试过

df["date"] = df["date"].astype(str)
df["date"] = df["date"].replace('4000-01-01 00:00:00', pd.NaT)

效果很好。还有版本

df["date"] = pd.to_datetime(df["date"].replace("4000-01-01 00:00:00",pd.NaT))

工作。对于长数据框版本,我收到以下错误

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 4000-01-01 00:00:00

有人建议如何以一种优雅的方式解决这个问题,或者可能是什么问题?

谢谢。

2 个答案:

答案 0 :(得分:0)

如果将参数errors='coerce'添加到to_datetime函数,它将为所有不可解析的日期时间返回NaT

df["date"] = pd.to_datetime(df["date"], errors='coerce')

答案 1 :(得分:0)

错误是因为:

In [332]: pd.Timestamp.max
Out[332]: Timestamp('2262-04-11 23:47:16.854775807')

日期的上限是这个。而且您的值超出了范围,因此超出了OutOfBoundsError。