代码之家  ›  专栏  ›  技术社区  ›  Ahamed Moosa

如何在同一列上进行分组和聚合

  •  1
  • Ahamed Moosa  · 技术社区  · 8 年前

    我有一个销售数据框

    Date    Store   Company     product             Amount
    1-1-18  A       company_x       A001               10
    1-1-18  A       company_y       A002               20
    1-1-18  A       comapny_z       A003               30
    1-1-18  B       comapny_x       A001               40
    1-1-18  B       company_y       A002               50
    1-1-18  B       company_z       A003               60
    2-1-18  A       company_x       A001               10
    2-1-18  A       company_y       A002               20
    2-1-18  A       comapny_z       A003               30
    2-1-18  B       comapny_x       A001               40
    2-1-18  B       company_y       A002               50
    2-1-18  B       company_z       A003               60
    2-1-18  A       company_x       A001               10
    2-1-18  A       company_y       A002               20
    2-1-18  A       comapny_z       A003               30
    2-1-18  B       comapny_x       A001               40
    2-1-18  B       company_y       A002               50
    2-1-18  B       company_z       A003               60
    2-1-18  A       company_x       A001               10
    2-1-18  A       company_y       A002               20
    2-1-18  A       comapny_z       A003               30
    2-1-18  B       comapny_x       A001               40
    2-1-18  B       company_y       A002               50
    2-1-18  B       company_z       A003               60
    3-1-18  A       company_x       A001               10
    3-1-18  A       company_y       A002               20
    3-1-18  A       comapny_z       A003               30
    3-1-18  B       comapny_x       A001               40
    3-1-18  B       company_y       A002               50
    3-1-18  B       company_z       A003               60
    

    我想按产品、公司和商店获得每个产品分组的销售订单的唯一计数

    Store   Company     product          Count
    A       Company_x       A001            5 
    B       Company_y       A002            5
    C       Company_z       A003            5
    

    我试过了

    df.groupby(['Store','Company','Product'],as_index='False').agg({'product':'nunique'})
    

    但python给了我一个值错误,显然我不能使用同一列进行分组和聚合。

    我将感谢你对我实现目标的善意帮助

    编辑:

    我很感激你的回答能帮助我,但那是我的错。实际上,我想知道这些产品销售的唯一天数。

    所以解决办法是,df。groupby(['Store'、'Company'、'Product'],as_index='False')。agg({'Date':'nunique'})

    3 回复  |  直到 8 年前
        1
  •  1
  •   Haleemur Ali    8 年前

    聚集 nunique 在索引上 product 会回来吗 1 每组如下: 产品 是索引中的最后一级。

    使用聚合函数 'size' 并将该系列重命名为 count 就像你的例子一样。然后 reset_index 或者选择groupby with option as_index=False .

    df.groupby(['Store', 'Company', 'product']).agg('size').rename('count').reset_index()
    
      Store    Company product  count
    0     A  comapny_z    A003      5
    1     A  company_x    A001      5
    2     A  company_y    A002      5
    3     B  comapny_x    A001      5
    4     B  company_y    A002      5
    5     B  company_z    A003      5
    
        2
  •  1
  •   jpp    8 年前

    似乎有两个问题:

    1. 你的剧集名是 product 不 Product .
    2. 要获得项目数量的计数,可以使用 len . nunique 给出唯一值的数量。

    下面是一个演示:

    res = df.groupby(['Store','Company','product'],as_index='False').agg({'product': len})
    
    print(res)
                             product
    Store Company   product         
    A     comapny_z A003           5
          company_x A001           5
          company_y A002           5
    B     comapny_x A001           5
          company_y A002           5
          company_z A003           5
    
        3
  •  0
  •   gruby    8 年前

    count on groupby将返回唯一行的所有计数,然后选择amount并重命名列将完成此工作。

    data.groupby(['Store','Company','product'],as_index='False').count()['Amount'].rename('count').reset_index()
    
      Store    Company product  count
    0     A  comapny_z    A003      5
    1     A  company_x    A001      5
    2     A  company_y    A002      5
    3     B  comapny_x    A001      5
    4     B  company_y    A002      5
    5     B  company_z    A003      5
    
    推荐文章