我有一个数据框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
答案 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