天天看点

DataFrameGroupBy对象不能使用sort_values()的解决办法

I am trying to sort numbers column in dataframe but getting this error 'id' column has count of id's at specific stations. e.g. 2272, 2202, 1855, etc.

df.sort_values(by=['id'])
           

However, I am getting this error:

'Cannot access callable attribute 'sort_values' of 'DataFrameGroupBy' objects, try using the 'apply' method'

You're trying to call a 

DataFrame

 method from 

GroupBy

 object. If your goal is to sort within each group, you can simply pass multiple keys in 

by

:

with 

df

 as a dataframe and not a groupby object ...

df.sort_values(by=['groupby_key1', 'groupby_key2', '...', 'id'])
           

If you want to sort within the group by, do as the error message suggests and use 

apply

 (with 

df

 as a dataframe and not a groupby object):

gb = df.groupby(['gropuby_key1', 'groupby_key2', '...'])
gb.apply(lambda _df: _df.sort_values(by=['id'])