加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 将数据帧列名从字符串格式更改为datetime

发布时间:2020-12-20 12:11:47 所属栏目:Python 来源:网络整理
导读:我有一个数据框,其中列的名称是字符串形式的日期(年 – 月).如何以日期时间格式转换这些名称? 我试过这样做: new_cols = pd.to_datetime(df.columns)df = df[new_cols] 但我得到错误: KeyError: "DatetimeIndex(['2000-01-01','2000-02-01','2000-03-01',
我有一个数据框,其中列的名称是字符串形式的日期(年 – 月).如何以日期时间格式转换这些名称?
我试过这样做:

new_cols = pd.to_datetime(df.columns)
df = df[new_cols]

但我得到错误:

KeyError: "DatetimeIndex(
['2000-01-01','2000-02-01','2000-03-01','2000-04-01','2000-05-01','2000-06-01','2000-07-01','2000-08-01','2000-09-01','2000-10-01','2015-11-01','2015-12-01','2016-01-01','2016-02-01','2016-03-01','2016-04-01','2016-05-01','2016-06-01','2016-07-01','2016-08-01'],dtype='datetime64[ns]',length=200,freq=None) not in index"

谢谢!

解决方法

如果通过loc列选择值未更改,则获取KeyError.

所以你需要将输出分配给列:

df.columns = pd.to_datetime(df.columns)

样品:

cols = ['2000-01-01','2000-05-01']
vals = np.arange(5)
df = pd.DataFrame(columns = cols,data=[vals])
print (df)
   2000-01-01  2000-02-01  2000-03-01  2000-04-01  2000-05-01
0           0           1           2           3           4

print (df.columns)
Index(['2000-01-01','2000-05-01'],dtype='object')

df.columns = pd.to_datetime(df.columns)

print (df.columns)
DatetimeIndex(['2000-01-01',freq=None)

也可以转换为期间:

print (df.columns)
Index(['2000-01-01',dtype='object')

df.columns = pd.to_datetime(df.columns).to_period('M')

print (df.columns)
PeriodIndex(['2000-01','2000-02','2000-03','2000-04','2000-05'],dtype='period[M]',freq='M')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读