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

Python更新具有相同列和几个不同行的两个数据帧

  •  2
  • Mainland  · 技术社区  · 3 年前

    我正在连接具有相同列的两个数据帧。我想更新第一个数据帧。然而,我的代码创建了额外的列,但它没有更新。

    我的代码:

    left = pd.DataFrame({"key": ["K0", "K1", "K2", "K3"],
                "A": ["NaN", "NaN", "NaN", "NaN"],
            "B": ["B0", "B1", "B2", "B3"],})
     right = pd.DataFrame({"key": ["K1", "K2", "K3"],    
            "A": ["C1", "C2", "C3"],    
            "B": [ "B1", "B2", "B3"]})
    result = pd.merge(left, right, on="key",how='left')   
    

    当前输出:

    result = 
      key  A_x B_x  A_y  B_y
    0  K0  NaN  B0  NaN  NaN
    1  K1  NaN  B1   C1   B1
    2  K2  NaN  B2   C2   B2
    3  K3  NaN  B3   C3   B3
    

    预期输出:

    result = 
      key  B    A  
    0  K0  B0  NaN 
    1  K1  B1   C1 
    2  K2  B2   C2 
    3  K3  B3   C3 
    
    1 回复  |  直到 3 年前
        1
  •  2
  •   Dani Mesejo    3 年前

    使用 combine_first :

    result = left.set_index("key").combine_first(right.set_index("key")).reset_index()
    print(result)
    

    输出

      key    A   B
    0  K0  NaN  B0
    1  K1   C1  B1
    2  K2   C2  B2
    3  K3   C3  B3