Pandas DataFrame复制索引列至新列报错问题及解决方法
解决将DataFrame索引复制为新列的KeyError问题
问题分析
你遇到的KeyError: 'date'是因为date列已经被设置为DataFrame的索引,不再属于普通列范畴,此时用列名date访问自然会找不到对应列。
重现错误的代码
import pandas as pd # 构造示例数据 data = {'date': ['2024-01-01', '2024-01-02', '2024-01-03'], 'value': [100, 200, 300]} df1 = pd.DataFrame(data) # 将date设为索引 df1.set_index('date', inplace=True) # 错误的赋值方式 df1['date1'] = df1['date'].copy()
报错信息
KeyError: 'date'
两种可行的解决方法
方法1:直接通过.index赋值(推荐)
直接访问索引对象并赋值给新列,这是最简洁高效的方式:
df1['date1'] = df1.index
方法2:先恢复索引为列再复制
如果需要临时将索引转回列进行操作,之后可重新设置索引:
# 恢复索引为普通列 df1 = df1.reset_index() # 复制date列到date1 df1['date1'] = df1['date'].copy() # 重新将date设为索引(可选,根据需求决定) df1.set_index('date', inplace=True)
最终期望结果
执行上述任一方法后,DataFrame会新增date1列,值与索引完全一致:
value date1 date 2024-01-01 100 2024-01-01 2024-01-02 200 2024-01-02 2024-01-03 300 2024-01-03
内容的提问来源于stack exchange,提问作者Champion
相关产品推荐
相关产品推荐

