我有两个数据框:
DF1
A B
'a' 'x'
'b' 'y'
'c' 'z'
DF2
Col1 Col2
'j' 'm'
'a' 'x'
'k' 'n'
'b' 'y'
并且想查找DF1的行是否包含在DF2中,并将该列Bool_col添加到DF1,就像这样。
DF1
A B Bool_col
'a' 'x' True
'b' 'y' True
'c' 'z' False
我尝试在 Col1 和 Col2 的连接列表中查找 A 和 B 的连接,但我的数据给我带来了意想不到的麻烦。关于如何在不连接列的情况下执行此操作的任何帮助?
最佳答案
df = df1.merge(df2, how='left', indicator=True, left_on=['A','B'], right_on=['Col1','Col2'])
df['Bool_col'] = np.where(df['_merge']=='both', True, False)
df.drop(['_merge','Col1','Col2'], 1, inplace=True)
print(df)
输出:
A B Bool_col
0 a x True
1 b y True
2 c z False
编辑
根据@cs95 在评论中的建议,np.where
在这里是不必要的。
你可以简单地做
df1['Bool_col'] = df['_merge']=='both'
# df.drop(['_merge','Col1','Col2'], 1, inplace=True)
关于python - 检查一个 DataFrame 的行是否存在于另一个 DataFrame 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56141958/