我有一个数据帧(虚拟df)
id category price
1 a 50
2 a 30
3 a 10
6 a 5
0 b 20
7 c 80
我想按类别分组,并将价格分为不同的区间[0.25,0.5,0.75]
我做了
quantile = df[['category', 'price']].groupby('category').quantile([0.25,0.5,0.75])
但它给我的结果是以下格式:
category price
a 0.25 xx (xx,yy,zz are just temporary used value, not real)
0.5 yy
0.75 zz
我希望我的结果采用以下格式:
category 0.25 0.5 0.75
a xx yy zz (temporary used values)
b qq ee ef
我可以在那里了解这些类别属于哪个价格区。
有没有办法得到这个结果?
答案 0 :(得分:1)
您可以添加unstack
:
quantile = df[['category', 'price']].groupby('category').quantile([0.25,0.5,0.75])['price']
.unstack()
print (quantile)
0.25 0.50 0.75
category
a 8.75 20.0 35.0
b 20.00 20.0 20.0
c 80.00 80.0 80.0
或者:
quantile = df.groupby('category')['price'].quantile([0.25,0.5,0.75]).unstack()
print (quantile)
0.25 0.50 0.75
category
a 8.75 20.0 35.0
b 20.00 20.0 20.0
c 80.00 80.0 80.0