我有两个数据框(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”。
result = df1[df1["A"].isin(df2["A"].tolist())]
不起作用。
答案 0 :(得分:1)
您可以将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
或通过左联接和indicator=True
使用DataFrame.merge
:
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