【问题标题】:How to calculate total amount by pandas groupby number and unit price如何通过pandas groupby数量和单价计算总金额
【发布时间】:2020-11-26 19:46:22
【问题描述】:

假设我有一些数据如下:

id      date    num     name    desc    price
1   7/6/2020    10      pen     abcd     $1
1   7/6/2020    2       abc     efg      $3
1   7/6/2020    3       bcd     efg      $5
2   7/6/2020    3       pen     abcd     $1
2   7/6/2020    1       pencil  abcd     $3
2   7/6/2020    2       disk     abcd    $1
2   7/6/2020    2       paper    abcd    $1
3   7/6/2020    2       ff       pag     $100
3   7/6/2020    10      water    kml     $5
4   7/15/2020   5       gg       kml     $5
4   7/15/2020   10      cofffee  oo      $5
5   7/15/2020   5       pp      oo       $4
6   7/15/2020   2       abc    efg        $3
6   7/15/2020   3       bcd    efg        $5
6   7/15/2020   4       aa      efg        $5
6   7/15/2020   5       bb       efg        $6
7   7/15/2020   1       bag       abcd      $50
7   7/15/2020   1       box      abcd       $20
8   7/15/2020   1       pencil    abcd      $3
8   7/15/2020   2       disk     abcd      $1
8   7/15/2020   2       paper    abcd      $1
8   7/15/2020   2       ff       hijk     $100
9   8/15/2020   10      water    kml     $5
9   8/15/2020   5       gg        kml     $5
9   8/15/2020   10      cofffee   oo     $5
9   8/15/2020   5       pp       oo       $4
9   8/15/2020   2       abc      efg        $3
10  8/15/2020   3       bcd      efg        $5
10  8/15/2020   4       aa        efg        $5
10  8/15/2020   5       bb        efg        $6
11  8/15/2020   1       bag       abcd      $50
11  8/15/2020   1       box       abcd      $20

我想通过pandas groupby数量和单价计算总金额,下面的代码只能得到数字,我需要的是number multiply by price

import pandas as pd
import xlrd

df = pd.read_excel ('./orders.xlsx', sheet_name='Sheet1')
df.groupby(by=['name']).sum()

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    首先将$ 从列price 替换为新列并聚合sum:

    df['price'] = df['price'].replace('$','', regex=True).astype(int)
    df['new'] = df['price'].mul(df['num'])
    
    df1 = df.groupby(by=['name'], as_index=False)['new'].sum()
    

    【讨论】:

    猜你喜欢
    • 2017-08-01
    • 2023-04-07
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多