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

时间:2019-05-09 11:26:40

标签: 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”。

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

1 个答案:

答案 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