应用分位数后,熊猫集团不会坚持下去吗?

时间:2016-09-25 19:51:12

标签: python pandas

我试图在Pandas df中为两个不同的组获取分位数。我能够应用分位数功能并得到一个包含分组结果的表格,但是,我似乎无法在数据帧上调用groupby属性。例如:

rand = np.random.RandomState(1)
df = pd.DataFrame({'A': ['foo', 'bar'] * 3,
                   'B': rand.randn(6),
                   'C': rand.randint(0, 20, 6)})
gb = df.groupby(['A'])
gb.groups

返回类似于:

的内容
{'bar': [1, 3, 5], 'foo': [0, 2, 4]}

然后我应用分位数函数:

q=gb.quantile(np.arange(0,1.1,.1))

当我打印这个df时,它显示了两个组,但是当我尝试调用它们时,它会抛出一个错误:

q.group
AttributeError: 'DataFrame' object has no attribute 'group'

如何在分位数数据框中调用组?

2 个答案:

答案 0 :(得分:2)

(首先,请注意您的代码丢失

import numpy as np
import numpy.random as rand

或类似的东西。第二个猜测有点烦人。)

你的两行

gb = df.groupby(['A'])
q=gb.quantile(np.arange(0,1.1,.1))

等同于

q=df.groupby(['A']).quantile(np.arange(0,1.1,.1))

换句话说,q已经是在每个组上应用分位数的结果。您要查找的结果是q本身:

>>> q
                B     C
A                      
bar 0.0 -1.311556  13.0
    0.1 -1.188745  13.2
    0.2 -1.065935  13.4
    0.3 -0.943124  13.6
    0.4 -0.820313  13.8
    0.5 -0.697503  14.0
    0.6 -0.662497  14.4
    0.7 -0.627492  14.8
    0.8 -0.592486  15.2
    0.9 -0.557481  15.6
    1.0 -0.522475  16.0
foo 0.0  0.032946   1.0
    0.1  0.051352   4.0
    0.2  0.069759   7.0
    0.3  0.088166  10.0
    0.4  0.106572  13.0
    0.5  0.124979  16.0
    0.6  0.388895  16.2
    0.7  0.652811  16.4
    0.8  0.916728  16.6
    0.9  1.180644  16.8
    1.0  1.444560  17.0

答案 1 :(得分:0)

您可以使用索引调用特定组:

q.loc['foo']