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

时间:2015-11-19 00:10:00

标签: python-3.x numpy pandas

我有两个这样的数据框:

DF1

    ID
    10C
    25Y
    66B
    100W

DF2

    ID
    10C
    5
    25Y
    66B

我想查看DF1中的任何值是否出现在DF2中,如果是,则将1(如果存在)或0(如果它不是)添加到新列(例如<) / p>

  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

1 个答案:

答案 0 :(得分:1)

您可以简单地使用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

merge-kind解决方案,如下所示,但我认为使用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