python - sort - reset_index pandas
Pandas: Reindex Unsorts Dataframe (2)
Tengo algunos problemas para ordenar y luego restablecer mi Índice en Pandas:
dfm = dfm.sort([''delt''],ascending=False)
dfm = dfm.reindex(index=range(1,len(dfm)))
El marco de datos devuelve sin clasificar después de reindexar. Mi objetivo final es tener un marco de datos ordenado con números de índice de 1 -> len (dfm), así que si hay una mejor manera de hacerlo, no me importaría.
¡Gracias!
Creo que estás malinterpretando lo que hace reindex
. Utiliza el índice pasado para seleccionar los valores a lo largo del eje pasado, y luego se llena con NaN
donde el índice pasado no coincide con el índice actual. Lo que te interesa es simplemente establecer el índice en otra cosa:
In [12]: df = DataFrame(randn(10, 2), columns=[''a'', ''delt''])
In [13]: df
Out[13]:
a delt
0 0.222 -0.964
1 0.038 -0.367
2 0.293 1.349
3 0.604 -0.855
4 -0.455 -0.594
5 0.795 0.013
6 -0.080 -0.235
7 0.671 1.405
8 0.436 0.415
9 0.840 1.174
In [14]: df.reindex(index=arange(1, len(df) + 1))
Out[14]:
a delt
1 0.038 -0.367
2 0.293 1.349
3 0.604 -0.855
4 -0.455 -0.594
5 0.795 0.013
6 -0.080 -0.235
7 0.671 1.405
8 0.436 0.415
9 0.840 1.174
10 NaN NaN
In [16]: df.index = arange(1, len(df) + 1)
In [17]: df
Out[17]:
a delt
1 0.222 -0.964
2 0.038 -0.367
3 0.293 1.349
4 0.604 -0.855
5 -0.455 -0.594
6 0.795 0.013
7 -0.080 -0.235
8 0.671 1.405
9 0.436 0.415
10 0.840 1.174
Recuerde, si desea que len(df)
esté en el índice, debe agregar 1 al punto final, ya que Python no incluye los puntos finales cuando construye rangos .
En lugar de reindexar, simplemente cambie el índice real:
dfm.index = range(1,len(dfm) + 1)
Entonces eso no cambiará el orden, solo el índice