HOWTO · Pandas
Convertir la Series de Pandas en DataFrame
Introduce cómo convertir la serie de pandas en Dataframe
En esta página
Usa pandas.DataFrame() o pandas.Series.to_frame() para convertir una Series de Pandas en un DataFrame. Ambos métodos conservan el índice de la Series como índice de filas del DataFrame. Usa to_frame(name=...) para asignar un nombre a la columna de valores; usa reset_index(name=...) si quieres convertir el índice anterior en una columna normal. Para combinar varias Series como columnas, usa pd.concat(..., axis=1).
Los ejemplos usan esta Series, cuyas etiquetas se convierten en el índice de filas en cada conversión:
import pandas as pd
import numpy as np
np.random.seed(0)
df_series = pd.Series(
np.random.randint(0, 100, size=(10)),
index=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
)
print(df_series)
a 44
b 47
c 64
d 67
e 67
f 9
g 83
h 21
i 36
j 87
dtype: int64
Convertir una Series de Pandas en un DataFrame con pandas.DataFrame()
Pasa una Series a pandas.DataFrame() para crear un DataFrame de una columna. El argumento columns establece la etiqueta de la columna de valores; el índice de la Series se mantiene como índice de filas. Este constructor general resulta útil cuando ya estás creando un DataFrame a partir de otros datos.
import pandas as pd
import numpy as np
np.random.seed(0)
df_series = pd.Series(
np.random.randint(0, 100, size=(10)),
index=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
)
print(pd.DataFrame(df_series, columns=["A"]))
A
a 44
b 47
c 64
d 67
e 67
f 9
g 83
h 21
i 36
j 87
El DataFrame resultante tiene una columna llamada A y conserva las etiquetas de a a j como índice.
Usa el constructor cuando la entrada ya sea una Series y quieras especificar opciones del DataFrame al crearlo. La lista columns controla la etiqueta de la columna de salida; no sustituye el índice de la Series. Si omites columns, pandas usa el nombre de la Series para la columna de valores cuando lo tiene; de lo contrario, usa 0.
Convertir una Series de Pandas en un DataFrame con pandas.Series.to_frame()
Llama a Series.to_frame() para convertir directamente una Series en un DataFrame de una columna. Pasa name para elegir la etiqueta de la columna de valores. El método conserva el índice de la Series, lo que resulta útil cuando sus etiquetas identifican las filas.
Para una sola Series, to_frame(name="A") es una alternativa concisa a pandas.DataFrame(series, columns=["A"]). Elige un nombre que describa los valores, sobre todo antes de combinar este DataFrame con otras tablas. Estas conversiones no convierten el índice de la Series en una columna de datos; para obtener esa estructura, usa reset_index().
import pandas as pd
import numpy as np
np.random.seed(0)
df_series = pd.Series(
np.random.randint(0, 100, size=(10)),
index=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
)
print(df_series.to_frame(name="A"))
A
a 44
b 47
c 64
d 67
e 67
f 9
g 83
h 21
i 36
j 87
Si una Series no tiene nombre, to_frame() usa 0 como etiqueta de la columna de valores. Si también necesitas el índice de la Series como datos en una columna, usa el método reset_index(). Al asignar un nombre al eje del índice, la primera columna de salida se llama index:
import pandas as pd
import numpy as np
np.random.seed(0)
df_series = pd.Series(
np.random.randint(0, 100, size=(10)),
index=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
).rename_axis("index")
print(df_series)
print("\n")
print(df_series.reset_index())
index
a 44
b 47
c 64
d 67
e 67
f 9
g 83
h 21
i 36
j 87
dtype: int64
index 0
0 a 44
1 b 47
2 c 64
3 d 67
4 e 67
5 f 9
6 g 83
7 h 21
8 i 36
9 j 87
reset_index() devuelve un DataFrame con el índice anterior en la columna index y los valores de la Series en una columna llamada 0. Pasa name para asignar directamente una etiqueta a la columna de valores:
import pandas as pd
import numpy as np
np.random.seed(0)
df_series = pd.Series(
np.random.randint(0, 100, size=(10)),
index=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
).rename_axis("index")
print(df_series)
print("\n")
print(df_series.reset_index(name="A"))
index
a 44
b 47
c 64
d 67
e 67
f 9
g 83
h 21
i 36
j 87
dtype: int64
index A
0 a 44
1 b 47
2 c 64
3 d 67
4 e 67
5 f 9
6 g 83
7 h 21
8 i 36
9 j 87
Convertir varias Series de Pandas en DataFrames
Para colocar varias Series una al lado de otra en un DataFrame, pásalas a pd.concat() con axis=1. Pandas alinea los valores según las etiquetas del índice, así que las etiquetas coincidentes quedan en la misma fila. Las Series siguientes tienen el mismo índice y producen tres columnas de valores:
import pandas as pd
import numpy as np
np.random.seed(0)
df_series1 = pd.Series(
np.random.randint(0, 100, size=(10)),
index=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
)
df_series2 = pd.Series(
np.random.randint(40, 100, size=(10)),
index=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
)
df_series3 = pd.Series(
np.random.randint(80, 100, size=(10)),
index=["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
)
df_stitched = pd.concat([df_series1, df_series2, df_series3], axis=1)
print(df_stitched)
0 1 2
a 44 46 97
b 47 64 85
c 64 64 93
d 67 52 88
e 67 98 89
f 9 41 99
g 83 78 96
h 21 79 99
i 36 63 85
j 87 86 95
La función pd.concat() usa axis=1 para concatenar por columnas. Su valor predeterminado es axis=0, que concatena por filas. Si los índices son distintos, la concatenación por columnas alinea las Series según sus etiquetas; las etiquetas que falten en una Series tendrán valores ausentes en esa columna.