熊猫列astype错误:TypeError:无法将索引转换为dtype datetime64 [D]

时间:2019-03-21 07:37:01

标签: python pandas

我正在使用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]

1 个答案:

答案 0 :(得分:1)

您可以将to_datetimeDatetimeIndex.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: []