在python中使用Pandas合并后如何查找删除的数据?

时间:2019-01-26 13:01:28

标签: python pandas

我的数据框如下所示。我正在使用Pandas合并功能来合并两个数据框,并且试图找到被删除的行。在Pandas或python中有没有办法跟踪此信息?

df1=pd.DataFrame(({'Name':('A','B','C'),'Age':(34,23,90)}))
df2=pd.DataFrame(({'Name':('A','B','D'),'Add':('rt','ct','pt')}))
pd.merge(df1,df2,on='Name')

2 个答案:

答案 0 :(得分:3)

merge与外部联接和参数indicator=True一起使用:

df = pd.merge(df1,df2,on='Name', indicator=True, how='outer')
print (df)
  Name   Age  Add      _merge
0    A  34.0   rt        both
1    B  23.0   ct        both
2    C  90.0  NaN   left_only
3    D   NaN   pt  right_only

最后用boolean indexing过滤所有行:

print (df[df['_merge'] != 'both'])
  Name   Age  Add      _merge
2    C  90.0  NaN   left_only
3    D   NaN   pt  right_only

另一种解决方案是使用isin进行过滤,并使用~反转掩码:

print (df1[~df1['Name'].isin(df2['Name'])])
  Name  Age
2    C   90

print (df2[~df2['Name'].isin(df1['Name'])])
  Name Add
2    D  pt

答案 1 :(得分:1)

merge = pd.merge(df1,df2,on='Name', indicator=True, how='outer')
print (merge)
#drop dataframe
del df1
del df2