pandas转换YYYYMMDD格式日期为datetime报KeyError: 'DATE'如何解决
报错核心原因
reset_index()方法默认返回新数据框,不会修改原df,执行完后DATE仍然是原df的索引,不属于普通列,因此无法通过df['DATE']读取到数据,触发KeyError。
可选修复方案
方案1:直接修改原数据框结构(需要保留DATE为普通列时用)
给reset_index添加inplace=True参数,直接修改原df的结构:
df.reset_index(inplace=True) df['DATE'] = pd.to_datetime(df['DATE'], format='%Y%m%d') # 后续如果需要把DATE重新设为索引可以补充:df.set_index('DATE', inplace=True)
方案2:接收重置索引后的新数据框
将reset_index()的返回值赋值给df,覆盖原数据框:
df = df.reset_index() df['DATE'] = pd.to_datetime(df['DATE'], format='%Y%m%d')
方案3:无需重置索引,直接转换索引类型(更高效)
如果后续仍需要DATE作为索引,不需要把它转为普通列,直接修改索引的类型即可:
df.index = pd.to_datetime(df.index, format='%Y%m%d')
内容的提问来源于stack exchange,提问作者pythonmanslither5000
相关产品推荐
相关产品推荐

