【问题标题】:Convert only some columns names to datetime仅将某些列名称转换为日期时间
【发布时间】:2021-04-26 03:15:55
【问题描述】:

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

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

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

【问题讨论】:

    标签: python pandas list datetime


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      相关资源
      最近更新 更多