我正在使用pandas
来读取一个csv文件,其中列名是日期时间,例如2017-01-02
。我尝试使用以下代码将列类型更改为datatime64[D]
:
df.columns = df.columns.astype('datetime64[D]')
但是,它会引发强制转换错误:TypeError: Cannot cast Index to dtype datetime64[D]
'
当我将代码更改为
df.columns = df.columns.astype('datetime')
它不会引发任何错误。然后,我应该如何将列类型更改为datetime64[D]
或M8[D]
答案 0 :(得分:1)
您可以将to_datetime
与DatetimeIndex.floor
一起使用熊猫方法:
df.columns = pd.to_datetime(df.columns).floor('D')
您的解决方案应该可以工作(已在熊猫0.24.2中测试):
df.columns = pd.to_datetime(df.columns).values.astype('datetime64[D]')
示例:
df = pd.DataFrame(columns=['2015-02-02 12:20:31','2018-01-01 15:32:04'])
print (df)
Empty DataFrame
Columns: [2015-02-02 12:20:31, 2018-01-01 15:32:04]
Index: []
df.columns = pd.to_datetime(df.columns).floor('D')
print (df)
Empty DataFrame
Columns: [2015-02-02 00:00:00, 2018-01-01 00:00:00]
Index: []