检查另一列中是否存在多列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
我想运行查询多列(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