如何导出两个数据帧之间不常见的记录列表?

时间:2020-09-19 15:17:03

标签: pandas dataframe duplicates vlookup isin

我有两个与证券相关的数据框-相同的结构/数据类型,只是大小不同。

df1:

     security_ID     market_cap
0    ajax123         100000
1    apple456        10000
2    amazon513       20000
3    firefly312      200000


df2:
    
         security_ID     market_cap
    0    ajax123         100000
    1    apple456        10000
    2    amazon513       20000
    3    google566       200000

我想进行vlookup样式检查,以识别df1中但不在df2中的安全ID,反之亦然。然后,我想删除这些安全ID,以便有两个相等的数据帧以进行进一步分析。

我尝试使用以下方法来实现此目的,但无济于事:

df1['sec_id_check'] = df1['security_ID'].isin(df2['security_ID'])

理想情况下,应该在df1['sec_id_check']中填充“ True”和“ False”,但我得到的只是所有12,498个条目中的“ True”。通过创建df2列,我以相反的方式对df['sec_id_check']重复了完全相同的方法,然后在所有12,510条记录中我只得到了'True'

我知道一个事实,即两个数据集之间都不存在证券-df1中的firefly123在df2中不存在,而google566在df2中,但在df1中不存在-我希望这些被标记在我的测试中为“假”。

期待您的回复-非常感谢!

2 个答案:

答案 0 :(得分:4)

您的代码适用于

m = df1['security_ID'].isin(df2['security_ID'])
print(df1[m])

答案 1 :(得分:2)

让我们使用pd.DataFrame.compare 1.1.0版中的新功能。

df1.compare(df2)

输出:

 security_ID           
         self      other
3  firefly312  google566