比较两列,看看差异

时间:2017-08-04 17:19:06

标签: python pandas numpy jupyter-notebook

我有一个数据框df1,其中一列是“id”:

id
fgh56t
67df59
534we5
780sda

我有另一个数据框df2,其中包含“id”列中所有ID的大量列表,其名称位于“names”列中:

id        names
fgh56t    abc
df439k    pqr
67df59    lmn
56432o    xyz
534we5    rst
780sda    cde

df2的大小显然会大于df1的大小,因为df2包含所有可能的id。我想创建一个结果数据框df3,其中包含df1中不存在但存在于df2中的所有ID及其名称。所以结果应该是这样的:

id        name
df439k    pqr
56432o    xyz

2 个答案:

答案 0 :(得分:2)

您可以使用isin构建布尔序列和子集:

df2[~df2.id.isin(df1.id)]

#       id  names
#1  df439k  pqr
#3  56432o  xyz

答案 1 :(得分:2)

此外,使用query方法,您可以

In [95]: df2.query('id not in @df1.id')
Out[95]:
       id names
1  df439k   pqr
3  56432o   xyz