tutorial tablas recorrer read_csv para leer funciones español documentacion datos data columns python pandas

python - tablas - ¿Cómo cambiar el valor del índice de cuadros de datos de Pandas?



recorrer data frame pandas (1)

Tengo un df :

>>> df sales cash STK_ID RPT_Date 000568 20120930 80.093 57.488 000596 20120930 32.585 26.177 000799 20120930 14.784 8.157

Y desea cambiar el valor del índice de la primera fila de (''000568'',''20120930'') a (''000999'',''20121231'') . El resultado final será:

>>> df sales cash STK_ID RPT_Date 000999 20121231 80.093 57.488 000596 20120930 32.585 26.177 000799 20120930 14.784 8.157

¿Cómo lograr esto?


Con esta configuración:

import pandas as pd import io text = ''''''/ STK_ID RPT_Date sales cash 000568 20120930 80.093 57.488 000596 20120930 32.585 26.177 000799 20120930 14.784 8.157 '''''' df = pd.read_csv(io.BytesIO(text), delimiter = '' '', converters = {0:str}) df.set_index([''STK_ID'',''RPT_Date''], inplace = True)

El índice, df.index se puede reasignar a un nuevo MultiIndex como este:

index = df.index names = index.names index = [(''000999'',''20121231'')] + df.index.tolist()[1:] df.index = pd.MultiIndex.from_tuples(index, names = names) print(df) # sales cash # STK_ID RPT_Date # 000999 20121231 80.093 57.488 # 000596 20120930 32.585 26.177 # 000799 20120930 14.784 8.157

O bien, el índice podría convertirse en columnas, los valores en las columnas podrían reasignarse y luego las columnas regresarían a los índices:

df.reset_index(inplace = True) df.ix[0, [''STK_ID'', ''RPT_Date'']] = (''000999'',''20121231'') df = df.set_index([''STK_ID'',''RPT_Date'']) print(df) # sales cash # STK_ID RPT_Date # 000999 20121231 80.093 57.488 # 000596 20120930 32.585 26.177 # 000799 20120930 14.784 8.157

El benchmarking con IPython %timeit sugiere reasignar el índice (el primer método, arriba) es significativamente más rápido que reiniciar el índice, modificar los valores de columna y luego volver a establecer el índice (el segundo método, arriba):

In [2]: %timeit reassign_index(df) 10000 loops, best of 3: 158 us per loop In [3]: %timeit reassign_columns(df) 1000 loops, best of 3: 843 us per loop