分位数作为大熊猫的列

时间:2018-01-30 15:45:42

标签: pandas

我有一个数据帧(虚拟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

我可以在那里了解这些类别属于哪个价格区。

有没有办法得到这个结果?

1 个答案:

答案 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