Pandas复制列至新DataFrame时出现KeyError问题求助
解决DataFrame新列复制时的KeyError问题
问题分析
你遇到的KeyError: 'column1',虽打印df1能看到该列,但复制到df2时出错,大概率是以下原因:
- 代码笔误导致
column1未正确赋值 - 列名存在拼写/格式问题(比如带空格)
- 两个DataFrame索引不匹配引发隐性问题
修复步骤
- 修正DataFrame引用笔误
你提供的代码中,loc条件用了df['column2'],但实际应该引用df1,这会导致赋值逻辑指向错误的DataFrame,修正后代码:
df1['column1'] = '' df1.loc[df1['column2'] == 'A', 'column1'] = 'Apple' df1.loc[df1['column2'] == 'B', 'column1'] = 'Ball'
- 确认列名正确性
打印df1所有列名,确保column1确实存在且无格式问题:
print(df1.columns.tolist())
如果输出列名是'column1 '(带空格),取列时要对应调整为df1['column1 ']。
- 绕过索引匹配直接赋值
若索引不匹配是问题根源,直接赋值列的数值数组即可:
df2['column1'] = df1['column1'].values
或者重置两个DataFrame的索引后再赋值:
df1 = df1.reset_index(drop=True) df2 = df2.reset_index(drop=True) df2['column1'] = df1['column1']
- 更安全的列创建方式
推荐用assign+np.where创建新列,避免视图/副本的隐性问题:
import numpy as np df1 = df1.assign( column1=np.where(df1['column2'] == 'A', 'Apple', np.where(df1['column2'] == 'B', 'Ball', '')) ) df2['column1'] = df1['column1']
内容的提问来源于stack exchange,提问作者sk8
相关产品推荐
相关产品推荐

