我有一个数据框,其中列的名称是字符串形式的日期(年 – 月).如何以日期时间格式转换这些名称?
我试过这样做:
我试过这样做:
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 举报,一经查实,本站将立刻删除。