检查另一列中是否存在多列pandas

Check if multiple columns exist in another columns pandas

我想运行查询多列(Data1、Data2)以查找其他列(Column1、Column2、Column3)中的值,如果它存在于任何这些列中(考虑到这些列为空细胞也)

我的数据是这样的:

Column1  Column2  Column3  Data1    Data2
sunday   monday            sunday   friday
sunday   friday   tuesday  friday   sunday
sunday            monday   thursday tuesday

我想要这样的输出:

Column1  Column2  Column3  Data1    Exist_Data1   Data2      Exist_Data2
sunday   monday            sunday   Yes           friday     Yes
sunday   friday   tuesday  friday   Yes           wednesday  No
sunday            monday   thursday  No           tuesday    Yes

我试过下面的命令:

pd.Series(['A', 'B']).isin(df.columns).all()(如Check if multiple columns exist in a df

但它会检查所有列。我修改了 df.columns 但似乎也不起作用。

*******更新 ********

尝试代码后编辑:

如下图所示,Data1 和 Data2 中有一些条目存在于其他列中,但仍然显示“否”。 (没有空白字符 - 所有字符都使用 strip() 删除”写入 CSV 并检查空格后进行双重检查。

您需要 Series.isin 将列的所有值展平为一个长列表:

cols = ['Column1','Column2','Column3']
v = np.ravel(df[cols])

df['Exist_Data1'] = np.where(df['Data1'].isin(v),'Yes', 'No')
df['Exist_Data2'] = np.where(df['Data2'].isin(v),'Yes', 'No')

#alternative
df[['Exist_Data1','Exist_Data2']] = np.where(df[['Data1', 'Data2']].isin(v),'Yes', 'No')


print (df)
  Column1 Column2  Column3     Data1      Data2 Exist_Data1 Exist_Data2
0  sunday  monday      NaN    sunday     friday         Yes         Yes
1  sunday  friday  tuesday    friday  wednesday         Yes          No
2  sunday     NaN   monday  thursday    tuesday          No         Yes