如何通过内连接合并两个DataFrame并避免出现重复列?
解决Pandas合并DataFrame时出现重复类别列的问题
这是合并DataFrame时非常常见的小问题,核心原因是你用left_on='Category'和right_on='CategoryName'指定了不同名称的连接键,所以合并后两个键列都会被保留在结果里。下面给你两种简单直接的解决方案:
方法一:合并前统一连接键的名称
先把第二个DataFrame的CategoryName列重命名为Category,让两个DataFrame的连接键名称保持一致,合并时就不会产生重复列了:
# 重命名df2的列,让连接键和df1匹配 df2_renamed = df2.rename(columns={'CategoryName': 'Category'}) # 使用统一的键列执行合并 result_df = df1.merge(df2_renamed, on='Category', how='inner')
方法二:合并后删除重复列
如果不想修改原DataFrame的结构,可以先执行你原来的合并操作,再直接删除其中一个重复的类别列:
# 执行原始合并逻辑 result_df = df1.merge(df2, left_on='Category', right_on='CategoryName', how='inner') # 删除重复的CategoryName列,保留原有的Category列 result_df = result_df.drop(columns=['CategoryName'])
两种方法最终得到的结果都会完全符合你的预期:
ItemName Category Element
item1 cat1 element1
item2 cat1 element1
item3 cat1 element1
item4 cat1 element1
item5 cat2 element2
item6 cat2 element2
内容的提问来源于stack exchange,提问作者Ian Kurtis
相关产品推荐
相关产品推荐

