English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
重建索引 Cambiará las etiquetas de filas y columnas del DataFrame. Reindexar significa hacer coincidir los datos con un conjunto de etiquetas dado en un eje específico.
Se pueden realizar varias operaciones a través del índice, como-
Reordenar los datos existentes para que coincidan con un conjunto de nuevas etiquetas.Insertar valores NA en las posiciones de etiquetas donde no existen datos.
import pandas as pd import numpy as np N=20 df = pd.DataFrame({ 'A': pd.date_range(start='2016-01-01',periods=N,freq='D'), 'x': np.linspace(0,stop=N-1,num=N), 'y': np.random.rand(N), 'C': np.random.choice(['Bajo','Medio','Alto'],N).tolist(), 'D': np.random.normal(100, 10, size=(N)).tolist() ) # Reconstruir índice de DataFrame df_reindexed = df.reindex(index=[02,5], columns=['A', 'C', 'B']) print(df_reindexed)
Resultados de la ejecución:
A C B 0 2016-01-01 Bajo NaN 2 2016-01-03 Alto NaN 5 2016-01-06 Bajo NaN
Es posible que desee obtener un objeto y reindexarlo en su eje para que coincida con otro objeto. Consideremos el siguiente ejemplo para entender el contenido similar.
import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(10,3),columns=['col1','col2','col3']) df2 = pd.DataFrame(np.random.randn(7,3),columns=['col1','col2','col3']) df1 = df1.reindex_like(df2) print(df1)
Resultados de la ejecución:
col1 col2 col3 0 -2.467652 -1.211687 -0.391761 1 -0.287396 0.522350 0.562512 2 -0.255409 -0.483250 1.866258 3 -1.150467 -0.646493 -0.222462 4 0.152768 -2.056643 1.877233 5 -1.155997 1.528719 -1.343719 6 -1.015606 -1.245936 -0.295275
Aquí, df1 DataFrame como df2También se cambia y reindexa. Los nombres de las columnas deben coincidir, de lo contrario se agregará NAN a toda la etiqueta de columna.
reindex() Usando el parámetro opcional método, que es un método de relleno con los valores siguientes
pad/ffill − Rellenar hacia adelante
bfill/backfill − Rellenar hacia atrás
nearest − Rellenar con el valor más cercano al índice
import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3']) df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3']) # Rellenar NAN print df2.reindex_like(df1) # Ahora llenamos NAN con los valores anteriores print("Fila de datos con relleno hacia adelante:") print(df2.reindex_like(df1,method='ffill'))
Resultados de la ejecución:
col1 col2 col3 0 1.311620 -0.707176 0.599863 1 -0.423455 -0.700265 1.133371 2 NaN NaN NaN 3 NaN NaN NaN 4 NaN NaN NaN 5 NaN NaN NaN Fila de datos con relleno hacia adelante: col1 col2 col3 0 1.311620 -0.707176 0.599863 1 -0.423455 -0.700265 1.133371 2 -0.423455 -0.700265 1.133371 3 -0.423455 -0.700265 1.133371 4 -0.423455 -0.700265 1.133371 5 -0.423455 -0.700265 1.133371
Las últimas cuatro filas se rellenan.
El parámetro limit proporciona un control adicional al reindexar. Limita la cantidad máxima de coincidencias consecutivas. Consideremos el siguiente ejemplo para entender el contenido similar-
import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3']) df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3']) # Rellenar NAN print df2.reindex_like(df1) # Ahora llenamos NAN con los valores anteriores print("Límite de relleno hacia adelante",1de la matriz de datos:") print(df2.reindex_like(df1,method='ffill',limit=1))
Resultados de la ejecución:
col1 col2 col3 0 0.247784 2.128727 0.702576 1 -0.055713 -0.021732 -0.174577 2 NaN NaN NaN 3 NaN NaN NaN 4 NaN NaN NaN 5 NaN NaN NaN Límite de relleno hacia adelante:1de la matriz de datos: col1 col2 col3 0 0.247784 2.128727 0.702576 1 -0.055713 -0.021732 -0.174577 2 -0.055713 -0.021732 -0.174577 3 NaN NaN NaN 4 NaN NaN NaN 5 NaN NaN NaN
Observe que la sexta línea anterior solo llenó la séptima línea. Luego, las filas se mantuvieron sin cambios.
A través del método rename(), puede reetiquetar el eje basado en ciertos mapeos (diccionario o serie) o cualquier función.
Consideremos el siguiente ejemplo para entender esto-
import pandas as pd import numpy as np df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3']) print df1 print ("Después de renombrar las filas y columnas:") print(df1.rename(columns={'col1' : 'c1', 'col2' : 'c2'}, index = {0 : 'apple', 1 : 'banana', 2 : 'durian'}))
Resultados de la ejecución:
col1 col2 col3 0 0.486791 0.105759 1.540122 1 -0.990237 1.007885 -0.217896 2 -0.483855 -1.645027 -1.194113 3 -0.122316 0.566277 -0.366028 4 -0.231524 -0.721172 -0.112007 5 0.438810 0.000225 0.435479 Después de renombrar las filas y columnas: c1 c2 col3 apple 0.486791 0.105759 1.540122 banana -0.990237 1.007885 -0.217896 durian -0.483855 -1.645027 -1.194113 3 -0.122316 0.566277 -0.366028 4 -0.231524 -0.721172 -0.112007 5 0.438810 0.000225 0.435479