首页 > 解决方案 > 仅将某些列名称转换为日期时间

问题描述

我有具有以下列名称的数据框:

print(df.columns)

Index(['name','city','age' ,'geometry', '2020-05-19', '2020-05-09', '2019-12-11',
       '2020-02-24', '2020-05-04', '2020-05-14', '2020-04-04', '2019-11-21',
       '2020-04-19', '2020-05-29', '2020-03-30', '2020-05-24', '2020-04-29',
       '2020-03-20', '2020-01-05', '2020-02-09', '2019-12-31', '2019-12-01',
       '2020-03-25', '2019-12-16', '2020-03-10', '2019-11-06', '2020-06-03',
       '2020-03-15', '2020-04-24', '2019-11-01', '2020-02-29', '2020-02-14',
       '2019-12-06', '2019-11-11', '2020-02-19', '2020-04-14', '2020-01-10',
       '2019-12-26', '2020-04-09'],
      dtype='object')

如您所见,日期列的顺序不正确。我想将这些列重新排序为正确的顺序。

我已经尝试通过切片列名列表来做到这一点,只更改日期,然后将其放回原处,但我得到了错误

TypeError:索引不支持可变操作

这就是我尝试这样做的方式:

time_cols=pd.to_datetime(df.columns[10:])
df.columns[4:]=time_cols
df.columns


----> 3 df.columns[4:]=time_cols
TypeError: Index does not support mutable operations

我的最终目标是将日期列的类型更改为日期时间,以便对它们进行排序。

标签: pythonpandaslistdatetime

解决方案


如错误所述,您可以对索引/列进行切片,但不能修改单个元素。但是,您可以替换整个内容:

# 4 or 10?
time_cols=pd.to_datetime(df.columns[4:])

df.columns = list(df.columns[:4]) + list(time_cols)

推荐阅读