Python 如何使用pandas中另一个数据帧的值更新一个数据帧

Python 如何使用pandas中另一个数据帧的值更新一个数据帧,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有两个dfs,df1就像 df2就像 我喜欢使用df2基于相同的主键更新df_1,对于df2中的其余行,将它们附加到df1的末尾,结果如下所示 primary_key code amount 220492763 763 32.41 213274768 764 24.41 226835769 766 88.41 224874836 7766 101.31 219074759 74836 111.33

我有两个dfs,df1就像

df2就像

我喜欢使用df2基于相同的主键更新df_1,对于df2中的其余行,将它们附加到df1的末尾,结果如下所示

primary_key    code    amount
220492763      763     32.41
213274768      764     24.41
226835769      766     88.41
224874836      7766    101.31
219074759      74836   111.33
217774816      768     123.43
222176762      798     111.44
219374759      24774   134.56
试图使用

df1.set_index('primary_key').combine_first(df2.set_index('primary_key')).reset_index()  
但是这两个dfs混合在一起,我想知道如何修复它。

首先使用combine\u

更新并添加订单

idx=pd.concat([df1.primary_key,df2.primary_key]).drop_duplicates()
yourdf=df2.set_index('primary_key').combine_first(df1.set_index('primary_key')).reindex(idx).reset_index()
yourdf
Out[293]: 
   primary_key     code  amount
0    220492763    763.0   32.41
1    213274768    764.0   24.41
2    226835769    766.0   88.41
3    224874836   7766.0  101.31
4    219074759  74836.0  111.33
5    217774816    768.0  123.43
6    222176762    798.0  111.44
7    219374759  24774.0  134.56
首先使用combine_

更新并添加订单

idx=pd.concat([df1.primary_key,df2.primary_key]).drop_duplicates()
yourdf=df2.set_index('primary_key').combine_first(df1.set_index('primary_key')).reindex(idx).reset_index()
yourdf
Out[293]: 
   primary_key     code  amount
0    220492763    763.0   32.41
1    213274768    764.0   24.41
2    226835769    766.0   88.41
3    224874836   7766.0  101.31
4    219074759  74836.0  111.33
5    217774816    768.0  123.43
6    222176762    798.0  111.44
7    219374759  24774.0  134.56
使用pd.concat、删除重复项并重新索引:

输出:

   primary_key   code  amount
0    220492763    763   32.41
1    213274768    764   24.41
2    226835769    766   88.41
3    224874836   7766  101.31
4    219074759  74836  111.33
5    217774816    768  123.43
6    222176762    798  111.44
7    219374759  24774  134.56
使用pd.concat、删除重复项并重新索引:

输出:

   primary_key   code  amount
0    220492763    763   32.41
1    213274768    764   24.41
2    226835769    766   88.41
3    224874836   7766  101.31
4    219074759  74836  111.33
5    217774816    768  123.43
6    222176762    798  111.44
7    219374759  24774  134.56

感谢您提供的解决方案,但输出并不完全是我想要的。感谢您提供的解决方案,但输出并不完全是我想要的。
idx=pd.concat([df1.primary_key,df2.primary_key]).drop_duplicates()
pd.concat([df2,df1]).drop_duplicates('primary_key').set_index('primary_key').reindex(idx).reset_index()
   primary_key   code  amount
0    220492763    763   32.41
1    213274768    764   24.41
2    226835769    766   88.41
3    224874836   7766  101.31
4    219074759  74836  111.33
5    217774816    768  123.43
6    222176762    798  111.44
7    219374759  24774  134.56