熊猫的多层次分组和总和

阿舒托什·斯里瓦斯塔瓦(Ashutosh Srivastava)

我需要在多个列过滤器上过滤数据框,尝试使用groupby,但感觉它仅限于2个级别。

df_dic = {'col1': [1, 2, 3, 2, 1], 'year': ['2019', '2019', '2020', '2020', '2019'], 'week': ['37', '38', '1', '2', '37'], 'product': [1, 1, 1, 1, 1], 'se': [1, 0, 0, 0, 1], 'sqe': [0, 1, 0, 0, 1]}

数据框:

   col1  year week  product  se  sqe
      1  2019   37        1   1    0
      2  2019   38        1   0    1
      3  2020    1        1   0    0
      2  2020    2        1   0    0
      1  2019   37        1   1    1

尝试过的迭代:在我的最新尝试中,我每年能够获得周数,但是我希望每周都能获得产品总和,总和,总和。

预期结果:

{
 "2019": {
         "37":{
               "Product": 2,
               "SE": 2,
               "SQE":1 
               },
         "38":{
               "Product": 1,
               "SE": 0,
               "SQE":1 
               },
               },
   "2020": 
        {
          "1":{
               "Product": 2,
               "SE": 0,
               "SQE":0 
               }
               }
      }

任何帮助,将不胜感激。顺便说一句:这些产品,se和sqe不能合并为一个。

戴维·布雷克斯

尝试:

df.groupby(by="year").apply(lambda grp: grp.groupby(by="week")[["product","se","sqe"]].sum().to_dict("index")).to_dict()

输出:

{'2019': 
       {'37': {'product': 2, 'se': 2, 'sqe': 1},
        '38': {'product': 1, 'se': 0, 'sqe': 1}},

 '2020': 
       {'1': {'product': 1, 'se': 0, 'sqe': 0},
        '2': {'product': 1, 'se': 0, 'sqe': 0}}}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章