我有一个数据框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
有人建议如何以一种优雅的方式解决这个问题,或者可能是什么问题?
谢谢。
答案 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。