按索引检索组。熊猫组是否排序?

时间:2014-04-27 22:46:37

标签: python pandas

假设我将Pandas数据框分组到某个列

df.groupby(cols)

是否根据任何标准对组进行排序?

检索组的一种方法是:

ix = 0
grouped.get_group(grouped.groups.keys()[ix])

但它有点冗长,并且不清楚上面的keys()是否会按顺序给出这些组。

另一种方式:

df = df.set_index(col)
df.loc[idx[df.index.levels[0][0],:],:]

但是,这真的很冗长。

是否有其他方法可以通过整数索引获取组?

2 个答案:

答案 0 :(得分:2)

groupby默认情况下sort参数为True,因此对这些组进行排序。至于获取n组,看起来您必须定义一个函数,并使用内部API:

In [123]: df = DataFrame({'a': [1,1,1,1,2,2,3,3,3,3], 'b': randn(10)})

In [124]: df
Out[124]:
   a       b
0  1  1.5665
1  1 -0.2558
2  1  0.0756
3  1 -0.2821
4  2  0.8670
5  2 -2.0043
6  3 -1.3393
7  3  0.3898
8  3 -0.3392
9  3  1.2198

[10 rows x 2 columns]

In [125]: gb = df.groupby('a')

In [126]: def nth_group(gb, n):
   .....:     keys = gb.grouper._get_group_keys()
   .....:     return gb.get_group(keys[n])
   .....:

In [127]: nth_group(gb, 0)
Out[127]:
   a       b
0  1  1.5665
1  1 -0.2558
2  1  0.0756
3  1 -0.2821

[4 rows x 2 columns]

答案 1 :(得分:1)

怎么样:

key, df2 = iter(grouped).next()