Python Pandas GroupBy get list of groups
If you do not care about the order of the groups, Yanqi Ma's answer will work fine:
g = x.groupby('Color')
g.groups.keys()
list(g.groups) # or this
However, note that g.groups
is a dictionary, so in Python <3.7 the keys are inherently unordered! This is the case even if you use sort=True
on the groupby
method to sort the groups, which is true by default.
This actually bit me hard when it resulted in a different order on two platforms, especially since I was using list(g.groups)
, so it wasn't obvious at first that g.groups
was a dict
.
In my opinion, the best way to do this is to take advantage of the fact that the GroupBy object has an iterator, and use a list comprehension to return the groups in the order they exist in the GroupBy object:
g = x.groupby('Color')
groups = [name for name,unused_df in g]
It's a little less readable, but this will always return the groups in the correct order.
There is much easier way of doing it:
g = x.groupby('Color')
g.groups.keys()
By doing groupby()
pandas returns you a dict of grouped DFs.
You can easily get the key list of this dict by python built in function keys()
.