объедините два фрейма данных и сохраните значения без общих значений, добавив значение Na

#python #pandas

Вопрос:

Я хочу связаться с двумя столбцами из независимых фреймов данных. Есть некоторые общие ценности (большинство из них), но не все из них. Это простая команда, но как я хочу получить результат, я не знаю.

Что мне нужно, так это:

  1. Общие ценности друг друга
  2. Если одно значение из одного набора данных не найдено в другом наборе данных, добавьте индикатор (например: «Не найдено» или значение null в порядке).
  3. Я не хочу терять или терять какую-либо ценность.

Пример.

 first = pd.DataFrame({"id1": ["K0","K4" ]) second = pd.DataFrame({"id2": ["K0", "K2", "K3"], "v": [4, 6,3]})   # Output:  Id1 Id2 k0 k0 Not found K2 Not found K3 K4 Not found ...  

Согласно документации, команда должна быть

 pd.concat([first, second["id2"]],axis=1,)  

Но это возвращает что-то вроде

 Id1 Id2 k0 k0 K3 K2 K4 Na ...  

Что я делаю не так?

Я убедился, что значения, которые неправильно совпадают, существуют в обоих входных столбцах

Ответ №1:

Давайте попробуем с помощью merge

 out = first.merge(second[['id2']],left_on='id1',right_on='id2',how='outer').fillna('not found') Out[186]:   id1 id2 0 K0 K0 1 K4 not found 2 not found K2 3 not found K3