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

如何基于pandas[复制]中的一列合并两个数据帧

  •  2
  • Pyd  · 技术社区  · 7 年前

    我有两个数据帧,

     df1=pd.DataFrame({"Req":["Req 1","Req 2","Req 3"],"Count":[1,2,1]})        
        Req     Count
    0   Req 1   1
    1   Req 2   2
    2   Req 3   1
    

    df2=pd.DataFrame({"Req":["Req 1","Req 2"],"Count":[0,1]})

        Req    Count
    0   Req 1   0
    1   Req 2   1
    

    我正在尝试根据“Req”列合并这些df

    我想要的输出是,

        Req    total  from_1 from_2
        Req 1   1       1     0
        Req 2   3       2     1
        Req 3   1       1     0
    

    我试过了 pd.merge(df1, df2, on = "Req", ) 但它并没有给我想要的输出,请帮忙,提前谢谢!

    1 回复  |  直到 7 年前
        1
  •  5
  •   jezrael    7 年前

    您可以使用 merge 使用左连接替换 NaN s、 重命名列并最后使用添加新列 assign :

    df = (pd.merge(df1, df2, on = "Req", how='left')
            .fillna(0)
            .rename(columns={'Count_x':'from_1','Count_y':'from_2'})
            .assign(total=lambda x: x['from_1'] + x['from_2'])
          )
    print (df)
       from_1    Req  from_2  total
    0       1  Req 1     0.0    1.0
    1       2  Req 2     1.0    3.0
    2       1  Req 3     0.0    1.0