我有这个:
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_counts
R
groupby
sum
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] 删除。
我来说两句