tutorial read functions documentacion python pandas

python - read - ¿Cómo convertir el índice de pandas en un marco de datos a una columna?



python pandas excel (4)

Para MultiIndex puedes extraer su subíndice usando

df[''si_name''] = R.index.get_level_values(''si_name'')

donde si_name es el nombre del subíndice.

Esto parece bastante obvio, pero parece que no entiendo cómo convierto un índice de marco de datos en una columna.

Por ejemplo:

df= gi ptt_loc 0 384444683 593 1 384444684 594 2 384444686 596

A,

df= index1 gi ptt_loc 0 0 384444683 593 1 1 384444684 594 2 2 384444686 596


Para proporcionar un poco más de claridad, veamos un DataFrame con dos niveles en su índice (un MultiIndex).

index = pd.MultiIndex.from_product([[''TX'', ''FL'', ''CA''], [''North'', ''South'']], names=[''State'', ''Direction'']) df = pd.DataFrame(index=index, data=np.random.randint(0, 10, (6,4)), columns=list(''abcd''))

El método reset_index , llamado con los parámetros predeterminados, convierte todos los niveles de índice en columnas y utiliza un RangeIndex simple como nuevo índice.

df.reset_index()

Utilice el parámetro de level para controlar qué niveles de índice se convierten en columnas. Si es posible, use el nombre del nivel, que es más explícito. Si no hay nombres de nivel, puede referirse a cada nivel por su ubicación de entero, que comienza en 0 desde el exterior. Puede usar un valor escalar aquí o una lista de todos los índices que desea restablecer.

df.reset_index(level=''State'') # same as df.reset_index(level=0)

En el raro caso de que desee conservar el índice y convertir el índice en una columna, puede hacer lo siguiente:

# for a single level df.assign(State=df.index.get_level_values(''State'')) # for all levels df.assign(**df.index.to_frame())


Si desea usar el método reset_index y también preservar su índice existente, debe usar:

df.reset_index().set_index(''index'', drop=False)

o para cambiarlo en su lugar:

df.reset_index(inplace=True) df.set_index(''index'', drop=False, inplace=True)

Por ejemplo:

print(df) gi ptt_loc 0 384444683 593 4 384444684 594 9 384444686 596 print(df.reset_index()) index gi ptt_loc 0 0 384444683 593 1 4 384444684 594 2 9 384444686 596 print(df.reset_index().set_index(''index'', drop=False)) index gi ptt_loc index 0 0 384444683 593 4 4 384444684 594 9 9 384444686 596

Y si desea deshacerse de la etiqueta de índice puede hacer:

df2 = df.reset_index().set_index(''index'', drop=False) df2.index.name = None print(df2) index gi ptt_loc 0 0 384444683 593 4 4 384444684 594 9 9 384444686 596


ya sea:

df[''index1''] = df.index

o, .reset_index :

df.reset_index(level=0, inplace=True)

entonces, si tiene un marco de índice múltiple con 3 niveles de índice, como:

>>> df val tick tag obs 2016-02-26 C 2 0.0139 2016-02-27 A 2 0.5577 2016-02-28 C 6 0.0303

y quiere convertir los niveles 1º ( tick ) y 3º ( obs ) en el índice en columnas, haría:

>>> df.reset_index(level=[''tick'', ''obs'']) tick obs val tag C 2016-02-26 2 0.0139 A 2016-02-27 2 0.5577 C 2016-02-28 6 0.0303