pandas合并两个Excel工作表触发TypeError:传入str类型对象无法合并
报错原因
pd.merge()方法仅支持传入Series或DataFrame类型的对象作为待合并的数据源,你在调用时给left、right参数传入的是带单引号的字符串'df_left'、'df_right',并非之前读取Excel生成的DataFrame变量,因此触发类型错误。
错误位置定位
问题出在merge调用的传参部分:
df_result = pd.merge(left='df_left', right='df_right', how='left', on='NUM')
此处包裹df_left、df_right的单引号会让Python把这两个值识别为普通字符串,而非你之前定义的DataFrame变量。
修正方法
去掉left、right参数对应值外层的单引号,直接传入DataFrame变量即可,修正后完整可运行代码:
import pandas as pd df_left = pd.read_excel('AAA.xlsx', sheet_name='Sheet1') df_right = pd.read_excel('BBB.xlsx', sheet_name='sheet1') print(df_right) df_right.rename(columns={'NO1': 'NUM'}, inplace=True) df_result = pd.merge(left=df_left, right=df_right, how='left', on='NUM') df_result.to_excel('df_result.xlsx', index=None)
运行注意事项
- 执行合并前需确认
df_left中同样存在NUM列,否则会触发关联键不存在的报错 - 两个表用于关联的
NUM列需保持数据类型一致,避免出现一侧是字符串、一侧是数值导致关联结果为空的问题
内容的提问来源于stack exchange,提问作者Winna
相关产品推荐
相关产品推荐

