如何获得基于一列的两个数据框架之间的差异?



我有一个数据帧(allPop)和一个地理数据帧(allTracts)。我将它们合并到列GEOID上,它们都共享:

newTracts = allTracts.merge(allPop, on='GEOID')

我的问题是我丢失了这个合并的数据,这在概念上不应该发生。allPop中的每条记录都应该与allTracts中的一条记录匹配,但是newTracts的记录比allPop少几百条。我希望能够查看未包含在合并中的记录,以尝试诊断问题。有办法做到这一点吗?或者,我可以根据allPop和allTracts的列"GEOID"找到它们之间的区别吗?我已经看到了如何在两个数据框架具有所有相同的列名/类型时做到这一点,但是我可以仅基于一个列做到这一点吗?我不确定这样做的输出会是什么样子,但是没有从两个数据框架合并的geoid列表会很好。或者是没有合并记录的数据框本身。谢谢!

您可以在Pandas中使用isin方法。

badPop = allPop[~allPop['GEOID'].isin(allTracts['GEOID'])

您还可以使用merge方法的indicator选项和how='outer'来查找有问题的行。

最新更新