在两个数据帧中查找重复项并从一个数据帧中删除重复项

Tom*_*son 10 python dataframe

使用 Python / pandas / dataframes 工作

我有这两个数据框:

数据框一:

          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
Run Code Online (Sandbox Code Playgroud)

数据框二:

          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
Run Code Online (Sandbox Code Playgroud)

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

     1           2       3 
1    Stockholm   150     376
2    Stockholm   109     104
3    Burnley     100     250
Run Code Online (Sandbox Code Playgroud)

Ji *_*Wei 11

使用:

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
Run Code Online (Sandbox Code Playgroud)

想法如下:

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

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