代码之家  ›  专栏  ›  技术社区  ›  dabljues

根据其他列的值从一个df更新另一个df

  •  1
  • dabljues  · 技术社区  · 4 年前

    我有两个数据帧:

       A  B  C
    0  1  3  5
    1  2  4  6
    

    df2型:

       A  B   C
    0  1  3  50
    1  3  5  -1
    2  2  4  60
    

    A B ,得到这样的结果:

       A  B  C
    0  1  3  50
    1  2  4  60
    

    • .update() 结果 A[1] == 3 北美 B[1] == 5 ,它只是按顺序排列,与键不匹配(因为我无法在那里指定它)
    • .merge() 带左连接和 on=["A", "B"] -到目前为止,我得到的最好的结果是,它将df的结果保存到只有2行 A=1,2 B=3,4 ,但它会添加列 C_x C_y C

    有没有一个干净的方法来做这件事,还是我应该去做 .merge() 把柱子拿开 _x 后缀+重命名 是的 ?

    1 回复  |  直到 4 年前
        1
  •  1
  •   Kenan    4 年前

    在df1中删除C,然后合并

    df1.drop('C', axis=1).merge(df2, on=['A', 'B'], how='left')

       A  B   C
    0  1  3  50
    1  2  4  60