我有两个与证券相关的数据框-相同的结构/数据类型,只是大小不同。
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中不存在-我希望这些被标记在我的测试中为“假”。
期待您的回复-非常感谢!
答案 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