合并两个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
相关产品推荐
相关产品推荐

