Я сравниваю два фрейма данных на основе их идентификаторов, а затем объединяю их, используя следующий код:
df = df1.merge(df2, on=id, suffixes=('_x','_y'))
df1
name age id salary
0 Smith 30 2 2000
1 Ron 24 3 30000
2 Mike 35 4 40000
3 Jack 21 5 5000
4 Roshan 20 6 60000
5 Steve 45 8 8000
6 Peter 28 1 1000
df2
name age salary id
0 Peter 32 10000 1
1 Smith 30 1500 2
2 Ron 24 7000 3
3 Mike 35 20000 4
4 Jack 21 5000 5
5 Cathy 20 9000 6
6 Steve 45 56000 8
o / p
name_x age_x id salary_x name_y age_y salary_y
0 Smith 30 2 2000 Smith 30 1500
1 Ron 24 3 30000 Ron 24 7000
2 Mike 35 4 40000 Mike 35 20000
3 Jack 21 5 5000 Jack 21 5000
4 Roshan 20 6 60000 Cathy 20 9000
5 Steve 45 8 8000 Steve 45 56000
6 Peter 28 1 1000 Peter 32 10000
Теперь, основываясь на выводе, я сравниваю значения столбцов _x и _y и помещаю их в маску:
mask = df[cols + '_x'].values == df[cols + '_y'].values
print(mask)
mask o / p
[[ True True False]
[ True True False]
[ True True False]
[ True True True]
[ True False False]
[ True True False]
[False True False]]
Основываясь на этом значении маски, я хочу поставить условие, что если false присутствует в маске, скажем, [1], то это должно дать мне совокупный результат 'No MAtch', который я могу добавить к своим результатам вывода, например:
name_x age_x id salary_x name_y age_y salary_y new_column
0 Smith 30 2 2000 Smith 30 1500 No Match
1 Ron 24 3 30000 Ron 24 7000 No Match
2 Mike 35 4 40000 Mike 35 20000 No Match
3 Jack 21 5 5000 Jack 21 5000 MAtch
4 Roshan 20 6 60000 Cathy 20 9000 No Match
5 Steve 45 8 8000 Steve 45 56000 No Match
6 Peter 28 1 1000 Peter 32 10000 No Match