sample = pd.DataFrame({'Cat':['A','B','C','A','B','C','A','B','C'], 
                       'Year':[2001,2002,2003,2001,2002,2003,2001,2002,2003]})

for s in sample.groupby(['Year']):
    print s[0]

Eso daría

2001
2002
2003

¿Cómo ordeno los resultados de groupby en orden descendente para obtener ...

2003
2002
2001
2
richie 28 ago. 2014 a las 20:35

2 respuestas

La mejor respuesta

Creo que su mejor opción sería ordenar el cuadro descendiendo antes de tiempo y pasar sort=False a la operación groupby para que los datos no se vuelvan a ordenar.

In [78]: sample = sample.sort(['Year'], ascending=False)

In [79]: for s in sample.groupby(['Year'], sort=False):
    ...:     print s[0]
    ...:     
2003
2002
2001
2
chrisb 28 ago. 2014 a las 16:55

Puede ordenar un marco de datos de pandas en orden ascendente frente a descendente de esta manera:

result = df.sort(['Year'], ascending=0 )

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort.html

0
Charles Clayton 28 ago. 2014 a las 16:57