python - 比较两个数据框,但仅在特定列上比较

标签 python excel pandas

我有两个数据框(df1 和 df2)

df1: 
 A  B C  D
12 52 16 23 
19 32 30 09

df2:  
A  G  C  D  E
12 13 16 04 100

我想在 df1 中创建一个名为“比较”的新列 然后我想比较列“A”和“C”,如果它们相同,则在该行中给“比较”值“X”。

结果 = df1[df1["A"].isin(df2["A"].tolist())] 不起作用。

最佳答案

您可以使用 & 链接 2 个条件进行按位 AND 或使用 | 进行按位 OR 链接,并通过 numpy.where 设置新值:

mask = df1["A"].isin(df2["A"]) & df1["C"].isin(df2["C"])
df1['Compare'] = np.where(mask, 'X', '')
print (df1)
    A   B   C   D Compare
0  12  52  16  23       X
1  19  32  30   9        

或者使用DataFrame.merge使用左连接和 indicator=True:

s = df1[['A','C']].merge(df2[['A','C']], how='left', indicator=True)['_merge']
df1['Compare'] = np.where(s == 'both', 'X', '')
print (df1)
    A   B   C   D Compare
0  12  52  16  23       X
1  19  32  30   9        

关于python - 比较两个数据框,但仅在特定列上比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56058365/

相关文章:

oop - 我怎样才能使这段代码成为Pythonic

javascript - 使用 django 在 HTML 中显示 mpld3 图表

sql - 将带有图像的 Excel 数据导入 SQL Server

python - Pandas 正确打印到屏幕,但仅将一些数据保存到 csv

python - Pandas 值的概率

在 Django 中设置分页时出现 Python 类型错误

Python:Pickle 如何与 defaultdict 一起工作

两次之间的Excel IF AND公式

C# Excel 互操作 - 从 Range 中删除第一行

Python Pandas 防止单元格换行