python - 检查一个 DataFrame 的行是否存在于另一个 DataFrame 中

标签 python pandas

我有两个数据框:

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 的连接,但我的数据给我带来了意想不到的麻烦。关于如何在不连接列的情况下执行此操作的任何帮助?

最佳答案

使用pandas.mergenumpy.where

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/

相关文章:

python - 使用 MIB 文件时出现 PySNMP 错误

python - 像这样在 python 中合并两个字典

Python pandas groupby 与按列过滤的其他行的区别

python - 用 Pandas 填补累积总和的空白

python - OPenAI Gym Retro 错误 : "AttributeError: module ' gym. utils.seeding' 没有属性 'hash_seed'“

python - 织物跑叉

python - 在具有随机字符串值的 Pandas 中插入一个新列

python - 如何使用 pandas 从一个数据帧创建测试和训练样本?

python - 计算 pandas 列中值的频率,其中另一列中的值相似

python - 在 matplotlib Python 中设置不同的条形颜色