熊猫自定义二级groupby函数

财富大米

我有这个:

df = pd.DataFrame({'sku_id' : ['A','A','A','B','C','C'],
                  'order_counts' : [1,2,3,1,1,2],
                  'order_val' : [10,20,30,10,10,20]})

创建:

第一个示例的输出

一个简单groupby()sku_id使用df.groupby('sku_id').sum()会给出:

第二个示例的输出

两级分组df.groupby(['sku_id', 'order_counts']).sum()将给出:

第三个例子的输出

但是现在我想要一个自定义的二级分组,order_counts这样任何order_counts == 1都被认为是一个组,并且任何order_counts > 1都被组合在一个标记为的组中R(对于重复顺序)

结果将如下所示:

sku_id order_counts  order_val         
A      1                    10
       R                    50                           
B      1                    10
C      1                    10
       R                    20

有没有办法提供自定义 groupby 功能来实现这一点?

舒巴姆·夏尔马

Mask列中!= 1,然后使用+order_countsRgroupbysum

g = df['order_counts'].mask(df['order_counts'] != 1, 'R')
df.groupby(['sku_id', g])['order_val'].sum()

结果

sku_id  order_counts
A       1               10
        R               50
B       1               10
C       1               10
        R               20
Name: order_val, dtype: int64

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章