Используйте Pandas для объединения двух DataFrames

У меня есть два Pandas DataFrames ниже:

DataFrame1
   id  a comment
0   1  1     yes
1   2  2      no
2   3  3     yes
DataFrame2
   id  a
0   2  5
1   4  4

Я хочу обновить DataFrame1 содержимым DataFrame2 на основе столбца id. Любые новые строки, найденные в DataFrame2, но не в DataFrame1, должны быть добавлены. Результат должен выглядеть так:

DataFrame3
   id  a comment
0   1  1     yes
1   2  5      no
2   3  3     yes
3   4  4

Я пытался использовать сочетание функций обновления/добавления/конкатента DataFrame, но не могу получить то, что ищу. Какие-либо предложения?

Используйте левое соединение, затем, когда все выровнено, обновите один столбец из другого столбца.

Tarik 11.12.2020 21:34
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
1
54
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете попробовать concat тогда groupby:

pd.concat([df2,df1]).groupby('id', as_index=False).first()

Выход:

   id  a comment
0   1  1     yes
1   2  5      no
2   3  3     yes
3   4  4     NaN

panda - это функция отображения данных, в python, если исходные данные находятся в словаре, вы можете mydict.update('key' : 'value') или mydict['key'] = value также будет работать. Я думаю, что у панды есть обратная функция, чтобы вернуть исходный словарь. но я сомневаюсь, что, когда он находится в форме панды, им можно манипулировать как таковым. кто-то сообщит вам, если это неправильно. Я использую данные панды только для отображения вещей, потому что это легко.

Pandas.DataFrame.merge должен сделать это, вы можете выполнять присоединение к базе данных, обновление должно работать.

Другие вопросы по теме