Saltar al contenido

Diferencia entre los métodos df.reindex () y df.set_index () en pandas

Solución:

Puedes ver la diferencia en un ejemplo simple. Consideremos este marco de datos:

df = pd.DataFrame({'a': [1, 2],'b': [3, 4]})
print (df)
   a  b
0  1  3
1  2  4

Los índices son entonces 0 y 1

Si utiliza set_index con la columna ‘a’, los índices son 1 y 2. Si lo hace df.set_index('a').loc[1,'b'], obtendrás 3.

Ahora si quieres usar reindex con los mismos índices 1 y 2 como df.reindex([1,2]), obtendrá 4.0 cuando lo haga df.reindex([1,2]).loc[1,'b']

Lo que pasó es que set_index ha reemplazado los índices anteriores (0,1) con (1,2) (valores de la columna ‘a’) sin tocar el orden de los valores en la columna ‘b’

df.set_index('a')
   b
a   
1  3
2  4

tiempo reindex cambia los índices pero mantiene los valores en la columna ‘b’ asociados a los índices en el df original

df.reindex(df.a.values).drop('a',1) # equivalent to df.reindex(df.a.values).drop('a',1)
     b
1  4.0
2  NaN
# drop('a',1) is just to not care about column a in my example

Finalmente, reindex cambiar el orden de los índices sin cambiar los valores de la fila asociada a cada índice, mientras set_index cambiará los índices con los valores de una columna, sin tocar el orden de los otros valores en el marco de datos

Solo para agregar, deshacer para set_index sería reset_index método (más o menos):

df = pd.DataFrame({'a': [1, 2],'b': [3, 4]})
print (df)

df.set_index('a', inplace=True)
print(df)

df.reset_index(inplace=True, drop=False)
print(df)

   a  b
0  1  3
1  2  4
   b
a   
1  3
2  4
   a  b
0  1  3
1  2  4

Además de una gran respuesta de Ben. T, me gustaría dar un ejemplo más de cómo son diferentes cuando usas reindex y set_index a una columna de índice

import pandas as pd
import numpy as np
testdf = pd.DataFrame({'a': [1, 3, 2],'b': [3, 5, 4],'c': [5, 7, 6]})

print(testdf)
print(testdf.set_index(np.random.permutation(testdf.index)))
print(testdf.reindex(np.random.permutation(testdf.index)))

Producción:

  • Con set_index, cuando index columna (la primera columna) se baraja, el orden de las otras columnas se mantiene intacto
  • Con reindex, el orden de las filas se cambia de acuerdo con la mezcla de index columna.
   a  b  c
0  1  3  5
1  3  5  7
2  2  4  6
   a  b  c
1  1  3  5
2  3  5  7
0  2  4  6
   a  b  c
2  2  4  6
1  3  5  7
0  1  3  5
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *