Объединить два DataFrame, но обновить исходные столбцы - PullRequest
0 голосов
/ 11 января 2019

Я хотел бы объединить два кадра данных на «ключ». Когда в правой части содержится та же клавиша, что и в левой, я бы хотел обновить в левой части то, что находится в соответствующем столбце (столбец «A»).

left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'], 'A': ['A0', 'A1', 'A2', 'A3']})
right = pd.DataFrame({'key': ['K0', 'K2'], 'A': ['new', 'new']})

left.merge(right, on="key", how="outer")

выходы:

  key A_x  A_y
0  K0  A0  new
1  K1  A1  NaN
2  K2  A2  new
3  K3  A3  NaN

размещение суффиксов: 'A_x' и 'A_y'

однако желаемый результат:

  key A
0  K0  new
1  K1  A1
2  K2  new
3  K3  A3

Что необходимо для слияния столбца A с ключевыми значениями, которые одинаковы в левом и правом кадрах данных?

1 Ответ

0 голосов
/ 11 января 2019

Одним безболезненным способом является использование update:

u = left.set_index('key')
u.update(right.set_index('key'))

u.reset_index()

  key    A
0  K0  new
1  K1   A1
2  K2  new
3  K3   A3

Если столбец «ключ» уникален, вы также можете concat и удалить дубликаты:

(pd.concat([left, right])
   .drop_duplicates('key', keep='last')
   .sort_index()
   .reset_index(drop=True))

  key    A
0  K0  new
1  K1   A1
2  K2  new
3  K3   A3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...