如何根据一列获取两个数据框之间的差异?
How can I get the difference between two dataframes based on one column?
我有一个数据框 (allPop) 和一个地理数据框 (allTracts)。我将它们合并到 GEOID 列中,它们共享:
newTracts = allTracts.merge(allPop, on='GEOID')
我的问题是我在这次合并中丢失了数据,这在概念上不应该发生。 allPop 中的每条记录都应与 allTracts 中的一条记录匹配,但 newTracts 的记录比 allPop 少几百条记录。我希望能够查看未包含在合并中的记录以尝试诊断问题。有没有办法做到这一点?或者,我可以根据它们的列 'GEOID' 找到 allPop 和 allTracts 之间的区别吗?我已经了解了当两个数据框都具有同一列 names/types 时如何执行此操作,但我可以仅基于一列执行此操作吗?我不确定这个输出会是什么样子,但是没有从两个数据帧中合并的 GEOID 列表会很好。或者数据框本身没有合并的记录。谢谢!
您可以在Pandas中使用isin
方法。
badPop = allPop[~allPop['GEOID'].isin(allTracts['GEOID'])
您还可以使用 merge
方法的 indicator
选项以及 how='outer'
来查找有问题的行。
我有一个数据框 (allPop) 和一个地理数据框 (allTracts)。我将它们合并到 GEOID 列中,它们共享:
newTracts = allTracts.merge(allPop, on='GEOID')
我的问题是我在这次合并中丢失了数据,这在概念上不应该发生。 allPop 中的每条记录都应与 allTracts 中的一条记录匹配,但 newTracts 的记录比 allPop 少几百条记录。我希望能够查看未包含在合并中的记录以尝试诊断问题。有没有办法做到这一点?或者,我可以根据它们的列 'GEOID' 找到 allPop 和 allTracts 之间的区别吗?我已经了解了当两个数据框都具有同一列 names/types 时如何执行此操作,但我可以仅基于一列执行此操作吗?我不确定这个输出会是什么样子,但是没有从两个数据帧中合并的 GEOID 列表会很好。或者数据框本身没有合并的记录。谢谢!
您可以在Pandas中使用isin
方法。
badPop = allPop[~allPop['GEOID'].isin(allTracts['GEOID'])
您还可以使用 merge
方法的 indicator
选项以及 how='outer'
来查找有问题的行。