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

如何在Python中基于唯一userID合并两个DataFrame并去除重复行

实现方法

你可以通过pandas的拼接+去重两步完成需求,代码如下:
首先导入依赖,构造示例数据(如果已经有真实的df1、df2可跳过构造部分):

import pandas as pd

# 构造df1示例数据
df1 = pd.DataFrame({
    'userid': [1,2,3,4,5],
    'name': ['a','b','c','d','e'],
    'count': [10,20,30,40,50]
})

# 构造df2示例数据
df2 = pd.DataFrame({
    'userid': [6,7,8,4,2],
    'name': ['f','g','h','d','b'],
    'count': [60,70,80,40,20]
})

执行合并去重操作:

# 方法1:concat拼接后按userid去重,适配你当前的场景
df3 = pd.concat([df1, df2], ignore_index=True).drop_duplicates(subset='userid', keep='first')
# 按userid升序排序,和你给出的期望结果顺序完全一致,不需要排序可以删除这行
df3 = df3.sort_values('userid', ignore_index=True)

如果担心字段匹配问题,也可以用外连接的写法实现,逻辑等价:

# 方法2:按全字段外连接,自动合并重复行
df3 = pd.merge(df1, df2, on=['userid','name','count'], how='outer').sort_values('userid', ignore_index=True)

参数说明

  • concat的ignore_index=True用于重置拼接后的行索引,避免两个df原有索引重复冲突
  • drop_duplicates的subset='userid'指定仅按userid字段判断重复,keep='first'表示重复时保留第一次出现的行,你当前场景下重复行的name、count完全一致,keep参数选first/last都不影响结果
  • sort_values('userid')用于输出结果按userid升序排列,不需要排序可直接删除该语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:48:03