我有两个这样的数据框:
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
答案 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