【问题标题】:How can I sum values from df1 that match another value from df2如何将 df1 中的值与 df2 中的另一个值相匹配
【发布时间】:2016-07-05 19:42:06
【问题描述】:

如何对 df1 中属于 df2 中另一个值的值求和?

我有一个非常大的 df,但可以说我有一个像这样的 df:

df1:

     A     B        C
0   John  Pen       Apple
1   John  Printer   Pie
2   John  Charger   Burger
3   Erick Battery   Pizza
4   Mandy Keyboard  Bread
5   Mandy Phone     Coffee
6   David Computer  Coke

还有一个df:

df2:

     A        B  
0   Pen       2
1   Printer   5
2   Charger   11
3   USB       5
4   Keyboard  8
5   Phone     21
6   Cup       3

还有第三个df:

df3: 

    A      B
0  Erick  Yes
1  John   Yes
2  David  No 
3  Mandy  Yes
4  Jared  No
5  Lisa   No

我想在 df3 的新列中对匹配值求和

我想要的df:

    A      B   Sum
0  Erick  Yes  
1  John   Yes  18
2  David  No   
3  Mandy  Yes  29
4  Jared  No
5  Lisa   No

我该怎么做?

【问题讨论】:

    标签: python list pandas sum


    【解决方案1】:

    你可以使用merge:

    df = pd.merge(df1, df2, left_on='B', right_on='A', suffixes=('','1'))
    df = df.groupby('A', as_index=False)['B1'].sum()
    df = pd.merge(df3, df, on='A', how='left').rename(columns={'B1':'Sum'})
    #if need remove NaN
    df.Sum.fillna('', inplace=True)
    print (df)
           A    B Sum
    0  Erick  Yes    
    1   John  Yes  18
    2  David   No    
    3  Mandy  Yes  29
    4  Jared   No    
    5   Lisa   No 
    

    【讨论】:

    • 对不起,jezrael,我意识到我没有写后缀......我的错。这解决了它。我还是 python 和 pandas 的新手,但是每天都在学习,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2021-03-28
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    相关资源
    最近更新 更多