从多列查找pandas

2024-10-01 15:44:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧df1和df2,如下所示:

df1:

a
T11552
T11559
T11566
T11567
T11569
T11594
T11604
T11625

df2:

^{pr2}$

我想要一个新的数据帧df3,我想在df2中搜索df1的值。如果df2中有这个值,我想在df1中添加一个返回True/False的新列,如下所示。在

df3:

a   v
T11552  TRUE
T11559  TRUE
T11566  TRUE
T11567  FALSE
T11569  TRUE
T11594  TRUE
T11604  TRUE
T11625  TRUE
T11633  TRUE
T11634  TRUE

Tags: 数据truedf1df2pr2df3t11552t11594
2条回答

^{}用于新的DataFrame^{}一起使用,并通过^{}将所有值转换为展平数组,为了提高性能,可以只检查^{}值,也可以按^{}进行检查:

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

试试这个:

df3 = df1[['a']].copy()
df3['v'] = df3['a'].isin(set(df2.values.ravel()))

上述代码将:

  1. 使用df1中的列“a”创建新的数据帧。在
  2. 创建一个布尔列'v',测试列'a'的每个值与set^{}中的值是否存在。在

相关问题 更多 >

    热门问题