我有两个df
,df1
就像
primary_key code amount
220492763 763 32.41
213274768 764 23.41
226835769 766 88.41
224874836 7766 100.31
219074759 74836 111.33
df2
就像
primary_key code amount
213274768 764 24.41
224874836 7766 101.31
217774816 768 123.43
222176762 798 111.44
219374759 24774 134.56
我喜欢使用df2
根据相同的df_1
更新primary_key
,对于df2
中的其余行,将它们附加到{{ 1}},结果看起来就像
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()
混合在一起,我想知道如何解决它。
答案 0 :(得分:2)
使用combine_first
yourdf=df2.set_index('primary_key').combine_first(df1.set_index('primary_key')).reset_index()
yourdf
Out[287]:
primary_key code amount
0 213274768 764.0 24.41
1 217774816 768.0 123.43
2 219074759 74836.0 111.33
3 219374759 24774.0 134.56
4 220492763 763.0 32.41
5 222176762 798.0 111.44
6 224874836 7766.0 101.31
7 226835769 766.0 88.41
更新添加订单
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
答案 1 :(得分:2)
使用pd.concat
,drop_duplicates
和reindex
:
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