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

合并两个Pandas DataFrame多列内连接时触发KeyError: 'Season Code'

Pandas内连接触发KeyError: 'Season Code'

我尝试基于「Season Code」和「SKU ID」两列对两个Pandas DataFrame执行inner join,编写了如下代码:

'''
Merge SKU file with concatenated sale file on both Season Code and SKU ID. Inner Join
'''
df_sales_merged=pd.merge(df_sales_join, dfSKUlu, how='inner', left_on=['Season Code', 'SKU ID'], 
                          right_on=['Season Code', 'SKU ID'])

预期得到仅包含两个DataFrame中共有的SKU销售数据的结果,但却触发了KeyError,错误信息末尾显示:KeyError: 'Season Code'。请问我哪里操作出错了?


问题原因与解决办法

这个错误的核心是你指定的「Season Code」列在其中一个DataFrame中不存在,常见诱因和对应解决方式如下:

1. 列名拼写/格式不一致

这是最常见的情况:

  • 大小写差异:比如实际列名是season code或SEASON CODE
  • 空格/符号差异:比如Season_Code、SeasonCode或Season Code(多了空格)
  • 中文/英文符号:比如列名里是全角空格而非半角

验证方式:先打印两个DataFrame的列名,确认目标列是否存在:

print("df_sales_join列名:", df_sales_join.columns.tolist())
print("dfSKUlu列名:", dfSKUlu.columns.tolist())

修复方式:统一两个DataFrame的列名后再执行merge,比如:

# 示例:将dfSKUlu的列名修正为匹配格式
dfSKUlu.rename(columns={
    'season code': 'Season Code',
    'sku id': 'SKU ID'
}, inplace=True)

2. 列被误删除/修改

检查merge之前的代码逻辑,确认是否有重命名、删除列的操作,比如df.drop('Season Code', axis=1)或df.rename(columns={'Season Code': '其他名称'})这类语句,导致目标列丢失。

3. 传入了错误的DataFrame变量

确认df_sales_join和dfSKUlu是否是你实际要处理的数据集,比如变量名拼写错误(比如写成df_sale_join或dfSKUlist),导致传入的DataFrame根本没有目标列。


内容的提问来源于stack exchange,提问作者AJCaffarini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:01:20