сопоставление значений в двух одинаковых столбцах на разных фреймах данных, чтобы получить соответствующее значение другого столбца - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть 2 фрейма данных, у них схожие столбцы, но второй сгруппирован (по столбцу C и функция агрегирования - max D, но я думаю, что это не важно), они выглядят так

df1 
       A     B     C    D
0     2     1     23   120
1     2     1     5    45
2     12    1     67   240
3     4     2     6    50
.
.
100   67    45     8   130

df2 
      A'    B'    C'    D'
0     2     1     23   120
1     14    2     30   200 
2     36    3     26   180
3     24    4     44   190
.
.
20    45    21    34   260

Я хочу сопоставить значения столбца A в df2 со значениями A в df1, чтобы я мог получить соответствующие значения столбца D в df1 (обратите внимание, что не все значения столбца A существуют в столбец A ')

конечный результат должен выглядеть следующим образом

      A         D
0     2        120
1     2        45
2     2        160
3     3        190 
4     3         50
5     3         70
.     
.    
.
80    23       145

1 Ответ

0 голосов
/ 27 февраля 2020

В конце вы получите выдержку из df1, содержащую только столбцы A и D и строки, для которых значение A существует в df2["A'"]. Поэтому я бы использовал:

df1.loc[df1['A'].isin(df2['A1'])].sort_values('A').reset_index(drop=True)

(я не хочу играть с A', поэтому я использовал A1 здесь)

...