You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas复制列至新DataFrame时出现KeyError问题求助

解决DataFrame新列复制时的KeyError问题

问题分析

你遇到的KeyError: 'column1',虽打印df1能看到该列,但复制到df2时出错,大概率是以下原因:

  • 代码笔误导致column1未正确赋值
  • 列名存在拼写/格式问题(比如带空格)
  • 两个DataFrame索引不匹配引发隐性问题

修复步骤

  1. 修正DataFrame引用笔误
    你提供的代码中,loc条件用了df['column2'],但实际应该引用df1,这会导致赋值逻辑指向错误的DataFrame,修正后代码:
df1['column1'] = ''
df1.loc[df1['column2'] == 'A', 'column1'] = 'Apple'
df1.loc[df1['column2'] == 'B', 'column1'] = 'Ball'
  1. 确认列名正确性
    打印df1所有列名,确保column1确实存在且无格式问题:
print(df1.columns.tolist())

如果输出列名是'column1 '(带空格),取列时要对应调整为df1['column1 ']。

  1. 绕过索引匹配直接赋值
    若索引不匹配是问题根源,直接赋值列的数值数组即可:
df2['column1'] = df1['column1'].values

或者重置两个DataFrame的索引后再赋值:

df1 = df1.reset_index(drop=True)
df2 = df2.reset_index(drop=True)
df2['column1'] = df1['column1']
  1. 更安全的列创建方式
    推荐用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:12:44