Python中合并两个DataFrame时如何避免出现重复条目
问题原因分析
- 仅对df1执行了去重操作,未对df2做去重处理。如果df2中同一个
Site_ID存在多条重复记录,inner join时会和df1的单条记录生成多条匹配结果,这是最常见的重复原因。 - 关联字段大小写不匹配。你的两个DataFrame关联字段命名为
Site_ID(首字母大写),但merge语句中on参数填写的是小写的site_id,pandas字段名区分大小写,若字段名不匹配会导致关联逻辑异常。 - 原始数据异常:你输出结果中出现的2354在原始输入中不存在,需确认是否为手误,或原始数据存在拼写错误、隐形空格等问题。
解决方法
首先先验证两个表的Site_ID重复情况:
# 查看df1的Site_ID重复记录数 print(df1['Site_ID'].duplicated().sum()) # 查看df2的Site_ID重复记录数 print(df2['Site_ID'].duplicated().sum())
再对两个表分别按关联字段去重后执行合并:
# 按关联字段去重,确保每个Site_ID仅对应一条记录 df1_distinct = df1.drop_duplicates(subset=['Site_ID'], keep='first') df2_distinct = df2.drop_duplicates(subset=['Site_ID'], keep='first') # 用正确的字段名执行内连接 merge_df_rf1 = pd.merge(df1_distinct, df2_distinct, on='Site_ID', how='inner') # 若仍有重复,可对最终结果再做一次去重 merge_df_rf1 = merge_df_rf1.drop_duplicates()
内容的提问来源于stack exchange,提问作者adey27
相关产品推荐
相关产品推荐

