为什么 pd.to_datetime 转换失败?

why does pd.to_datetime fail to convert?

我有一个对象列,其值是日期。从 csv 读取后,我手动放置了 2016-08-31 而不是 NaN。

            close_date
0  1948-06-01 00:00:00   
1  2016-08-31 00:00:00   
2  2016-08-31 00:00:00   
3  1947-07-01 00:00:00   
4  1967-05-31 00:00:00

运行 df['close_date'] = pd.to_datetime(df['close_date']) 结果

TypeError: invalid string coercion to datetime

添加 coerce=True 参数导致:

TypeError: to_datetime() got an unexpected keyword argument 'coerce'

此外,即使我调用列 'close_date',dataframe 中的所有列,一些 int64、float64 和 datetime64[ns],更改为 dtype 对象。

我做错了什么?

您需要 errors='coerce' 参数将一些不可解析的值转换为 NaT:

df['close_date'] = pd.to_datetime(df['close_date'], errors='coerce')
print (df)
  close_date
0 1948-06-01
1 2016-08-31
2 2016-08-31
3 1947-07-01
4 1967-05-31

print (df['close_date'].dtypes)
datetime64[ns]

但如果有一些混合值 - 带日期时间的数字首先转换为 str

df['close_date'] = pd.to_datetime(df['close_date'].astype(str), errors='coerce')