Python pandas 找不同并更新

Python pandas find difference and update

我需要将新数据集与现有 sql 数据集进行比较,并在出现新信息时更新它们。

data from db:
dfa 
id   foo    bar       
1     2     "home"
2     5     "work"
3     6     "car"
4     99    "people"

new data:
dfb
id   foo    bar 
1     22    "home"
2     5     "work"
8     8     "pet"
4     99    "humans"

我需要一种方法来识别 id 1 的 foo 列有一个不同的值,而 id 4 的 bar 列有一个新值。然后在将数据帧发送回数据库之前从数据库更新数据帧。我想以运行时高效的方式执行此操作。

dfout
id   foo    bar       
1     22     "home"
2     5     "work"
3     6     "car"
4     99    "humans"

我在网上搜索了解决方案。但是我找不到我的具体案例,而且我很难将我找到的内容放入我的案例中。有人可以解释一下我会怎么做吗?

这些看起来相关,但处理的是非重叠数据和整个新行。

通过Id使用DataFrame.update,因此首先转换列以在两个DataFrame中建立索引:

df1 = dfa.set_index('id')
df2 = dfb.set_index('id')

df1.update(df2)
dfa = df1.reset_index().astype(dfa.dtypes)
print (dfa)
   id  foo     bar
0   1   22    home
1   2    5    work
2   3    6     car
3   4   99  humans