Я пытаюсь объединить два Pandas кадра данных, которые выглядят следующим образом:
import pandas as pd
df1 = pd.DataFrame({'PAIR': ['140-120', '200-280', '350-310', '410-480', '500-570'],
'SCORE': [99, 70, 14, 84, 50]})
print(df1)
PAIR SCORE
0 140-120 99
1 200-280 70
2 350-310 14
3 410-480 84
4 500-570 50
df2 = pd.DataFrame({'PAIR1': ['140-120', '280-200', '350-310', '480-410', '500-570'],
'PAIR2': ['120-140', '200-280', '310-350', '410-480', '570-500'],
'BRAND' : ['A', 'V', 'P', 'V', 'P']})
print(df2)
PAIR1 PAIR2 BRAND
0 140-120 120-140 A
1 280-200 200-280 V
2 350-310 310-350 P
3 480-410 410-480 V
4 500-570 570-500 P
Если вы посмотрите поближе, вы заметите, что каждое значение в столбце PAIR
df1
соответствует либо значение в PAIR1
или PAIR2
из df2
. В df2
ключи присутствуют обоими способами (например, 140-120 и 120-140) .
Моя цель - объединить два кадра данных в получить следующий результат:
PAIR SCORE BRAND
0 140-120 99 A
1 200-280 70 V
2 350-310 14 P
3 410-480 84 V
4 500-570 50 P
Я попытался сначала объединить df1
с df2
следующим образом:
df3 = pd.merge(left = df1, right = df2, how = 'left', left_on = 'PAIR', right_on = 'PAIR1')
Затем, получив получившийся DataFrame df3
и объединить обратно с df2
:
df4 = pd.merge(left = df3, right = df2, how = 'left', left_on = 'PAIR', right_on = 'PAIR2')
print(df4)
PAIR SCORE PAIR1_x PAIR2_x BRAND_x PAIR1_y PAIR2_y BRAND_y
0 140-120 99 140-120 120-140 A NaN NaN NaN
1 200-280 70 NaN NaN NaN 280-200 200-280 V
2 350-310 14 350-310 310-350 P NaN NaN NaN
3 410-480 84 NaN NaN NaN 480-410 410-480 V
4 500-570 50 500-570 570-500 P NaN NaN NaN
Это не мой желаемый результат. Я не знаю, как еще я могу объяснить тот факт, что правильный ключ может быть либо в PAIR1
, либо PAIR2
. Любая помощь будет оценена.