Pandas-Reihe in DataFrame umwandeln

Sathiya Sarathi 30 Januar 2023 26 Dezember 2020 Pandas Pandas DataFrame Pandas Series
  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

  • Wie man Pandas DataFrame-Spaltenüberschriften als Liste erhält
  • Pandas DataFrame-Spalte löschen
  • Wie man DataFrame-Spalte in Datetime in Pandas konvertiert
  • Wie konvertiert man eine Fließkommazahl in eine Ganzzahl in Pandas DataFrame
  • Wie man Pandas-DataFrame nach den Werten einer Spalte sortiert
  • Wie erhält man das Aggregat der Pandas gruppenweise und sum
  • Verwandter Artikel - Pandas Series

  • Zusammenführen von zwei Pandas-Serien zu einem DataFrame
  • Pandas Series.map