假设我将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],:],:]
但是,这真的很冗长。
是否有其他方法可以通过整数索引获取组?
答案 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()