У меня есть два 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, но не могу получить то, что ищу. Какие-либо предложения?
Вы можете попробовать 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 должен сделать это, вы можете выполнять присоединение к базе данных, обновление должно работать.
Используйте левое соединение, затем, когда все выровнено, обновите один столбец из другого столбца.