微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个数据框,其中列的名称是字符串形式的日期(年 – 月).如何以日期时间格式转换这些名称
我试过这样做:

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')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐