Python 如何使用pandas中另一个数据帧的值更新一个数据帧
我有两个dfs,df1就像 df2就像 我喜欢使用df2基于相同的主键更新df_1,对于df2中的其余行,将它们附加到df1的末尾,结果如下所示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
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