¿Cómo convertir pandas index en un dataframe a una columna?
Esto parece bastante obvio, pero parece que no puedo averiguar cómo convertir un índice de marco de datos a 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
3 answers
O bien:
df['index1'] = df.index
O, .reset_index
:
df.reset_index(level=0, inplace=True)
Entonces, si tienes un marco multi-índice 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 desea convertir los niveles 1st (tick
) y 3rd (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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-23 02:20:50
Para MultiIndex puede extraer su subindex usando
df['si_name'] = R.index.get_level_values('si_name')
Donde si_name
es el nombre del subíndice.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-26 14:13:58
Para proporcionar un poco más de claridad, veamos un DataFrame con dos niveles en su índice (un multiíndice).
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 usa un simple RangeIndex
como nuevo índice.
df.reset_index()
Utilice el parámetro 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 nivel nombres, puede referirse a cada nivel por su ubicación entera, que comienzan 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 convertirlo 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())
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-24 22:04:27