python - 仅将某些列名称转换为日期时间
问题描述
我有具有以下列名称的数据框:
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
我的最终目标是将日期列的类型更改为日期时间,以便对它们进行排序。
解决方案
如错误所述,您可以对索引/列进行切片,但不能修改单个元素。但是,您可以替换整个内容:
# 4 or 10?
time_cols=pd.to_datetime(df.columns[4:])
df.columns = list(df.columns[:4]) + list(time_cols)