覆盖不同大小的熊猫的DataFrames中的列

发布于 2021-01-29 16:42:33

我有以下两个数据框:

df1 = pd.DataFrame({'ids':[1,2,3,4,5],'cost':[0,0,1,1,0]})
df2 = pd.DataFrame({'ids':[1,5],'cost':[1,4]})

而且我想在ID匹配时用df2上的值更新df1的值。所需的数据帧是这样的:

df_result = pd.DataFrame({'ids':[1,2,3,4,5],'cost':[1,0,1,1,4]})

我如何从上面两个数据框中得到它?

我尝试使用合并,但是记录较少,并且保留了两列:

results = pd.merge(df1,df2,on='ids')
results.to_dict()
{'cost_x': {0: 0, 1: 0}, 'cost_y': {0: 1, 1: 4}, 'ids': {0: 1, 1: 5}}
关注者
0
被浏览
41
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用set_index并首先合并以赋予df2中的值优先级

    df_result = df2.set_index('ids').combine_first(df1.set_index('ids'))
    df_result.reset_index()
    

    你得到

       ids  cost
    0   1   1
    1   2   0
    2   3   1
    3   4   1
    4   5   4
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看