Python: Sum values in DataFrame if other values match between DataFrames

后端 未结 3 1364
孤街浪徒
孤街浪徒 2021-01-14 23:54

I have two dataframes of different length like those:

DataFrame A:

FirstName    LastName
Adam         Smith
John         Johnson

Da

3条回答
  •  无人共我
    2021-01-15 00:40

    Use DataFrame.merge + DataFrame.groupby:

    new_df=( dfa.merge(dfb.groupby(['First','Last'],as_index=False).Value.sum() ,
                       left_on='LastName',right_on='Last',how='left')
                .drop('Last',axis=1) )
    print(new_df)
    

    to join for both columns:

    new_df=( dfa.merge(dfb.groupby(['First','Last'],as_index=False).Value.sum() ,
                  left_on=['FirstName','LastName'],right_on=['First','Last'],how='left')
                .drop(['First','Last'],axis=1) )
    print(new_df)
    

    Output:

      FirstName LastName  Value
    0      Adam    Smith    5.7
    1      John  Johnson    2.5
    

提交回复
热议问题