Pandas-Reihe in DataFrame umwandeln

Sathiya Sarathi 30 Januar 2023
  1. Konvertieren einer einzelnen Pandas Series in DataFrame mit pandas.DataFrame()
  2. Konvertieren einer einzelnen Pandas Series in einen DataFrame mit pandas.Series.to_frame()
  3. Mehrere Pandas-Serien in Dataframes konvertieren
Pandas-Reihe in DataFrame umwandeln

Die Erstellung neuer Spalten aus den abgeleiteten oder bestehenden Series ist eine anspruchsvolle Tätigkeit im Feature Engineering. Die neu erstellte Series oder Spalte kann mit Hilfe der nativen Funktionen von Pandas in einen Dataframe konvertiert werden. In diesem Artikel stellen wir vor, wie man Pandas Series in Dataframe konvertiert.

In den folgenden Beispielen werden wir mit dem Dataframe arbeiten, der mit dem folgenden Snippet erstellt wurde.

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)

Ausgabe:

a    44
b    47
c    64
d    67
e    67
f     9
g    83
h    21
i    36
j    87
dtype: int64

Konvertieren einer einzelnen Pandas Series in DataFrame mit pandas.DataFrame()

Die Series kann mit dem DataFrame()-Konstruktor in einen Dataframe umgewandelt werden, indem die Pandas Series als Argument übergeben wird.

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"]))

Ausgabe:

    A
a  81
b  37
c  25
d  77
e  72
f   9
g  20
h  80
i  69
j  79

Wie oben gesehen, liefert die Ausgabe der Funktion einen Dataframe.

Konvertieren einer einzelnen Pandas Series in einen DataFrame mit pandas.Series.to_frame()

Diese Funktion konvertiert die angegebene Pandas Series in einen Dataframe. Der Name der Spalte kann mit dem Argument name gesetzt werden.

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"))

Ausgabe:

    A
a  44
b  47
c  64
d  67
e  67
f   9
g  83
h  21
i  36
j  87

Es kann Szenarien geben, in denen die gegebene Serie keinen Namen hat. In solchen Situationen kann die Methode reset_index() hilfreich sein.

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())

Ausgabe:

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

Wie oben zu sehen, enthält der erstellte Dataframe eine neue Spalte mit dem Namen 0. Die Spalte mit dem Namen 0 kann mit dem Argument name umbenannt werden, das der Funktion reset_index() übergeben werden kann, wie unten gezeigt.

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"))

Ausgabe:

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

Mehrere Pandas-Serien in Dataframes konvertieren

Die obigen Beispiele haben die Fähigkeit demonstriert, nur eine einzelne Pandas Series in einen Dataframe zu konvertieren. Was wäre, wenn es mehrere Series gäbe und diese zu einem einzigen Dataframe zusammengefügt werden müssten? Nach der Erstellung der einzelnen Serien kann der Dataframe durch Verkettung mit der Funktion concat() erstellt werden.

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)

Ausgabe:

    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

Beachten Sie, dass die Funktion pd.concat() ein Argument axis=1 enthält, das dem Anhängen entlang der Spalte entspricht. Wenn axis nicht angegeben wird, erfolgt eine Zeilenverschmelzung oder Vereinigung über alle Dataframes.

Verwandter Artikel - Pandas DataFrame

Verwandter Artikel - Pandas Series