Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从多个列中查找_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 从多个列中查找

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

我有两个数据帧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”的每个值与
    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