检查一个DF中的ID是否存在于另一个DF(Python 3,Pandas)中



我有两个这样的数据帧:

DF1

    ID
    10C
    25Y
    66B
    100W

DF2

    ID
    10C
    5
    25Y
    66B

我想检查DF1中的任何值是否出现在DF2中,如果是,请将1(如果存在)或0(如果不存在)添加到新列(如)中

  ID    Appears
  10C      1
  25Y      1
  66B      1
  100W     0

我知道这是一个非常简单的问题,但它让我感到不适。

一直在尝试类似的东西

df3 = df1.merge(df2, on='ID', how='left')
df3.fillna(0)
df3['Appear'][df3.ID_x > 0] = 1
df3['Appear'][df3.ID_x = 0] = 0

您可以简单地使用np.in1d:

>>> np.in1d(df1['ID'], df2['ID']).astype('int')
array([1, 1, 1, 0])
>>> df1['Appears'] = np.in1d(df1['ID'], df2['ID']).astype('int')
>>> df1
    ID  Appears
0  10C        1
1  25Y        1
2  66B        1
3  100        0

合并类型的解决方案,如下所示,但我认为使用np.in1d会更快。

>>> df2['Appears'] = 1
>>> df1.merge(df2, on='ID', how='left').fillna({'Appears':0})
    ID  Appears
0  10C        1
1  25Y        1
2  66B        1
3  100        0

最新更新