#python #pandas
Вопрос:
Я хочу связаться с двумя столбцами из независимых фреймов данных. Есть некоторые общие ценности (большинство из них), но не все из них. Это простая команда, но как я хочу получить результат, я не знаю.
Что мне нужно, так это:
- Общие ценности друг друга
- Если одно значение из одного набора данных не найдено в другом наборе данных, добавьте индикатор (например: «Не найдено» или значение null в порядке).
- Я не хочу терять или терять какую-либо ценность.
Пример.
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