嗨,我有一张数据,如下所示:
product ID fees % fees quantity % quantity avg. price/item
0 ABB 4000 6% 651 5% 100
1 AXX 2500 5% 425 4% 110
2 ACC 2000 5% 538 4% 90
3 ADD 1500 4% 217 3% 80
4 AEE 1300 4% 192 3% 120
每种产品(从最高到最低)的费用都是按数据格式订购的,我的数据中有4000种产品。
我想做的是创建3个桶:为产品1-10,11-1000,1001+。对于每个水桶,我想计算总费用%,总量%数量和一个数量加权平均值的avg。那个水桶的价格。
我知道如何使用groupby标记那些行属于哪个桶(然后我可以按包含桶标签的列进行分组,并计算统计数据)。
对于如何最好地用桶标识符标记每一行,有什么想法吗?如果没有标签行就能做到这一点,请告诉我!
发布于 2018-07-23 19:28:57
我冒昧地改变了你的数据,让它跨越所有可能的范围和标签。df:
product ID fees % fees quantity % quantity avg. price/item label
0 ABB 40 6% 651 5% 100 2
1 AXX 2 5% 425 4% 110 1
2 ACC 2000 5% 538 4% 90 3
3 ADD 150 4% 217 3% 80 2
4 AEE 1300 4% 192 3% 120 3
要给数据加上标签,您需要使用pandas.cut
df['label'] = pd.cut(df['fees'], [1, 10, 1000, np.inf], labels=[1,2,3])
输出:
product ID fees % fees quantity % quantity avg. price/item label
0 ABB 40 6% 651 5% 100 2
1 AXX 2 5% 425 4% 110 1
2 ACC 2000 5% 538 4% 90 3
3 ADD 150 4% 217 3% 80 2
4 AEE 1300 4% 192 3% 120 3
然后,正如您已经提到的,您可以简单地使用带有标签的groupby数据,并使用groupby执行统计。
请注意,[1, 10, 1000, np.inf]
定义了bins
that,[1,2,3]
是回收箱的标签。
https://stackoverflow.com/questions/51485721
复制相似问题