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

Pandas合并两个DataFrame时如何得到指定的3行结果?

解决Pandas合并DataFrame出现多余行的问题

合并后得到9行而非预期3行,核心原因是其中一个(或两个)DataFrame的uid字段存在重复值,导致合并时发生一对多/多对多匹配,行数倍增。

排查与解决步骤:

  1. 先检查uid的重复情况
    执行以下代码确认哪个DF存在重复的uid:
# 查看df中各uid的出现次数
print(df['uid'].value_counts())
# 查看tempdf中各uid的出现次数
print(tempdf['uid'].value_counts())
  1. 根据重复原因处理数据
  • 如果是冗余重复数据:直接对重复的DF去重,保留每个uid对应的唯一行。比如保留tempdf中每个uid的第一条记录:

    tempdf = tempdf.drop_duplicates(subset='uid', keep='first')
    

    若需要保留最新记录,可先排序再去重:

    # 按时间倒序排序,保留最新的一条
    tempdf = tempdf.sort_values('time_date_friendly', ascending=False).drop_duplicates(subset='uid', keep='first')
    
  • 如果是每个uid对应多条有效数据:先对数据分组聚合,把同一uid的多条数据合并为单行,再执行合并。比如将tempdf中同一uid的Reference合并为列表,取最新的time_date_friendly:

    tempdf_agg = tempdf.groupby('uid').agg(
        time_date_friendly=('time_date_friendly', 'max'),
        Reference=('Reference', list)
    ).reset_index()
    
  1. 执行合并
    处理完成后再执行合并操作,就能得到预期的3行结果:
merged_df = tempdf.merge(df, how='left', on='uid')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:22:43