あなたは、これは辞書を返し、groupby
オブジェクトの属性.groups
を経由して、これをアクセスすることができ、辞書のキーはあなたのグループを与える:ここ
In [40]:
df = pd.DataFrame({'group':[0,1,1,1,2,2,3,3,3], 'val':np.arange(9)})
gp = df.groupby('group')
gp.groups.keys()
Out[40]:
dict_keys([0, 1, 2, 3])
はgroups
から出力されます:
In [41]:
gp.groups
Out[41]:
{0: Int64Index([0], dtype='int64'),
1: Int64Index([1, 2, 3], dtype='int64'),
2: Int64Index([4, 5], dtype='int64'),
3: Int64Index([6, 7, 8], dtype='int64')}
更新
groups
のあなたがkeys
を呼び出すときにそのグループの順序が維持されていないdict
次のとおりです。
In [65]:
df = pd.DataFrame({'group':list('bgaaabxeb'), 'val':np.arange(9)})
gp = df.groupby('group')
gp.groups.keys()
Out[65]:
dict_keys(['b', 'e', 'g', 'a', 'x'])
あなたはgroups
を呼び出す場合は、順序が維持されて見ることができます。
In [79]:
gp.groups
Out[79]:
{'a': Int64Index([2, 3, 4], dtype='int64'),
'b': Int64Index([0, 5, 8], dtype='int64'),
'e': Int64Index([7], dtype='int64'),
'g': Int64Index([1], dtype='int64'),
'x': Int64Index([6], dtype='int64')}
、キーの順序が維持されていますこの問題を回避するには、各グループの属性にアクセスすることです:
In [78]:
gp.apply(lambda x: x.name)
Out[78]:
group
a a
b b
e e
g g
x x
dtype: object
あなたが既に集約されたオブジェクトを持っている場合は、インデックス値を得ることができます:
In [81]:
agg = gp.sum()
agg
Out[81]:
val
group
a 9
b 13
e 7
g 1
x 6
In [83]:
agg.index.get_level_values(0)
Out[83]:
Index(['a', 'b', 'e', 'g', 'x'], dtype='object', name='group')
ありがとうございます。この方法は、私がループしたのと同じ順序を保つだろうか?私はちょうどこれが私が持っている他のいくつかのデータと同期することを確認したい。 – Nate
すべての助けてくれてありがとう! – Nate
'groups'はグループのインデックスを値として持っています - それらのインデックスからの実際のカラム値を得るための高速組み込み方法? –