我有两个数据框(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/