Cómo convertir el índice de un Dataframe de Pandas en una columna
-
df.index
para añadir el índice como una nueva columna -
reset_index
conrename_axis
para renombrar el nombre de la columna de índice actual -
método
set_index
para convertir la columna en índice -
MultiIndex
para establecer múltiples capas deindex
en lacolumns
Introduciremos varios métodos para convertir el índice
de un Pandas DataFrame
en una columna, como df.index
, set_index
, y reset_index
con rename_axis
para renombrar el índice
.
También introduciremos cómo podemos aplicar Multi-Index
a un DataFrame
dado con múltiples capas de índices.
df.index
para añadir el índice como una nueva columna
La forma más simple de añadir el índice como la columna es añadiendo df.index
como una nueva columna al DataFrame
.
Considere el siguiente código:
# python 3.x
import pandas as pd
df = pd.DataFrame(
[(1, 2, None), (None, 4, None), (5, None, 7), (5, None, None)],
columns=["a", "b", "d"],
)
df["index"] = df.index
print(df)
Producción :
a b d index1
0 1.0 2.0 NaN 0
1 NaN 4.0 NaN 1
2 5.0 NaN 7.0 2
3 5.0 NaN NaN 3
reset_index
con rename_axis
para renombrar el nombre de la columna de índice actual
Podemos cambiar el nombre de nuestro index
, y luego usar reset_index
para una serie:
# python 3.x
import pandas as pd
df = pd.DataFrame(
[(1, 2, None), (None, 4, None), (5, None, 7), (5, None, None)],
columns=["a", "b", "d"],
)
df = df.rename_axis("index").reset_index()
print(df)
Producción :
index a b d
0 0 1.0 2.0 NaN
1 1 NaN 4.0 NaN
2 2 5.0 NaN 7.0
3 3 5.0 NaN NaN
método set_index
para convertir la columna en índice
Podemos convertir cualquier columna en index
usando el método set_index
:
# python 3.x
import pandas as pd
df = pd.DataFrame(
[(1, 2, None), (None, 4, None), (5, 4, 7), (5, 5, None)], columns=["a", "b", "d"]
)
df.set_index("b", inplace=True)
print(df)
Producción :
a d
b
2 1.0 NaN
4 NaN NaN
4 5.0 7.0
5 5.0 NaN
O si queremos eliminar el nombre del index
, como en el original, podemos hacer df.index.name = None
:
# python 3.x
import pandas as pd
df = pd.DataFrame(
[(1, 2, None), (None, 4, None), (5, 4, 7), (5, 5, None)], columns=["a", "b", "d"]
)
df.set_index("b", inplace=True)
df.index.name = None
print(df)
Producción :
a d
2 1.0 NaN
4 NaN NaN
4 5.0 7.0
5 5.0 NaN
MultiIndex
para establecer múltiples capas de index
en la columns
Podemos usar la función MultiIndex.from_product()
para hacer un MultiIndex como sigue:
# python 3.x
import pandas as pd
import numpy as np
index = pd.MultiIndex.from_product(
[["Burger", "Steak", "Sandwich"], ["Half", "Full"]], names=["Item", "Type"]
)
df = pd.DataFrame(
index=index, data=np.random.randint(0, 10, (6, 4)), columns=list("abcd")
)
print(df)
Producción :
a b c d
Item Type
Burger Half 0 3 9 1
Full 2 2 0 5
Steak Half 8 4 5 5
Full 5 8 0 7
Sandwich Half 2 8 9 5
Full 4 4 5 9
Artículo relacionado - Pandas DataFrame
- Cómo obtener las cabeceras de columna de Pandas DataFrame como una lista
- Cómo borrar la columna de Pandas DataFrame
- Cómo convertir la columna del DataFrame a Datetime en Pandas
- Cómo convertir un float en un entero en Pandas DataFrame
- Cómo clasificar Pandas DataFrame por los valores de una columna
- Cómo obtener el agregado de Pandas grupo por y suma