Сравните два кадра данных, но только по конкретным столбцам - PullRequest
1 голос
/ 09 мая 2019

У меня есть два кадра данных (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 Ответ

1 голос
/ 09 мая 2019

Вы можете связать 2 условия с помощью & для побитового И или | для побитового ИЛИ и установить новые значения с помощью 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        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...