首页 > 解决方案 > 在两个数据帧中查找重复项并从一个数据帧中删除重复项

问题描述

使用 Python / pandas / 数据框

我有这两个数据框:

数据框一:

          1          2    3 
 1   Stockholm     100    250
 2   Stockholm     150    376
 3   Stockholm     105    235
 4   Stockholm     109    104
 5   Burnley       145    234
 6   Burnley       100    250

数据框二:

          1          2    3 
 1   Stockholm     100    250
 2   Stockholm     117    128
 3   Stockholm     105    235
 4   Stockholm     100    250
 5   Burnley       145    234
 6   Burnley       100    953

我想找到在数据框一和数据框二中找到的重复行,并从数据框一中删除重复的行。与数据框 2 一样,您可以在数据框 1 中找到第 1、3、5 行,这会将它们从数据框中删除并创建以下内容:

     1           2       3 
1    Stockholm   150     376
2    Stockholm   109     104
3    Burnley     100     250

标签: pythondataframe

解决方案


利用:

df_merge = pd.merge(df1, df2, on=[1,2,3], how='inner')
df1 = df1.append(df_merge) 

df1['Duplicated'] = df1.duplicated(keep=False) # keep=False marks the duplicated row with a True
df_final = df1[~df1['Duplicated']] # selects only rows which are not duplicated.
del df_final['Duplicated'] # delete the indicator column

思路如下:

  1. 对所有列进行内部连接
  2. 将内部连接的输出附加到 df1
  3. 识别 df1 中的重复行
  4. 选择 df1 中不重复的行

每个数字对应于每一行代码。


推荐阅读