如何根据pandas中的列合并两个数据框

pyd*_*pyd 2 python data-analysis dataframe pandas

我有两个数据框,

 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
Run Code Online (Sandbox Code Playgroud)

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

    Req    Count
0   Req 1   0
1   Req 2   1
Run Code Online (Sandbox Code Playgroud)

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

我想要的输出是,

    Req    total  from_1 from_2
    Req 1   1       1     0
    Req 2   3       2     1
    Req 3   1       1     0
Run Code Online (Sandbox Code Playgroud)

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

jez*_*ael 5

您可以使用merge左连接,替换NaNs,重命名列并最后添加新列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
Run Code Online (Sandbox Code Playgroud)