HOWTO · Pandas
Cómo convertir el índice de un Dataframe de Pandas en una columna
Este tutorial demuestra cómo convertir el índice de un Dataframe de Pandas en una columna, como usando set_index, reset_index y creando múltiples índices
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