values sort reset_index index drop column python sorting pandas reindex

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