Python 从多个列中查找
我有两个数据帧df1和df2,如下所示: df1: df2: 我想要一个新的数据帧df3,在这里我想要在df2中搜索df1的值。如果该值出现在df2中,我想在df1中添加一个新列,返回True/False,如下所示 df3: 试试这个:Python 从多个列中查找,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有两个数据帧df1和df2,如下所示: df1: df2: 我想要一个新的数据帧df3,在这里我想要在df2中搜索df1的值。如果该值出现在df2中,我想在df1中添加一个新列,返回True/False,如下所示 df3: 试试这个: df3 = df1[['a']].copy() df3['v'] = df3['a'].isin(set(df2.values.ravel())) 上述守则将: 使用df1中的列“a”创建新的数据帧 创建一个布尔列“v”,通过set和测试列“a”的每个值与df
df3 = df1[['a']].copy()
df3['v'] = df3['a'].isin(set(df2.values.ravel()))
上述守则将:
df1
中的列“a”创建新的数据帧set
和测试列“a”的每个值与df2
中的值的存在性数据帧
,并将所有值转换为扁平化数组,为提高性能,可以只检查值,也可以通过以下方式检查:
@阿姆鲁莎-很高兴能帮上忙!我想从“a”和“b”两列中搜索如果我的答案有帮助,不要忘记它-单击答案旁边的复选标记(
v
)将其从灰色变为填充。谢谢
a b
T11552 T11555
T11560 T11559
T11566 T11562
T11568 T11565
T11569 T11560
T11590 T11594
T11604 T11610
T11621 T11625
T11633 T11631
T11635 T11634
T13149 T13140
a v
T11552 TRUE
T11559 TRUE
T11566 TRUE
T11567 FALSE
T11569 TRUE
T11594 TRUE
T11604 TRUE
T11625 TRUE
T11633 TRUE
T11634 TRUE
df3 = df1[['a']].copy()
df3['v'] = df3['a'].isin(set(df2.values.ravel()))
df3 = df1.assign(v = lambda x: x['a'].isin(np.unique(df2.values.ravel())))
#alternative solution
#df3 = df1.assign(v = lambda x: np.in1d(x['a'], np.unique(df2[['a','b']].values.ravel())))
#if need specify columns in df2 for check
df3 = df1.assign(v = lambda x: x['a'].isin(np.unique(df2[['a','b']].values.ravel())))
print (df3)
a v
0 T11552 True
1 T11559 True
2 T11566 True
3 T11567 False
4 T11569 True
5 T11594 True
6 T11604 True
7 T11625 True