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

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...