API · Pandas
Pandas DataFrame DataFrame.apply() Funktion
Die Funktion Pandas DataFrame apply() wendet die Eingabefunktion auf jedes Element entlang der Zeile oder Spalte von Pandas DataFrame an.
Auf dieser Seite
Die Funktion pandas.DataFrame.apply() wendet die Eingabefunktion auf jedes Element entlang der Zeile oder Spalte des Aufrufers Pandas DataFrame an.
Syntax von pandas.DataFrame.apply():
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
Parameter
func |
Die Funktion, die auf jede Zeile oder Spalte anzuwenden ist |
axis |
Funktion entlang der row (axis=0) oder column (axis=1) anwenden |
raw |
Boolesch. Zeile/Spalte als Series-Objekt(raw=False) oder ndarray-Objekt(raw=True) übergeben |
result_type |
{expand, reduce, broadcast, None} Typ der Ausgabe der Operation nur anwendbar für axis=1 (Spalten)Neu in Version 0.23.0 |
args |
Positionsargumente für die Funktion func. |
**kwds |
Schlüsselwort-Argumente für die Funktion func. |
Zurück
Es gibt den Dataframe zurück, nachdem die Eingabefunktion entlang der angegebenen Achse angewendet wurde.
Beispiel-Codes: DataFrame.apply() Methode
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: x**2)
print(modified_df)
Ausgabe:
X Y
0 1 4
1 2 1
2 3 8
X Y
0 1 16
1 4 1
2 9 64
Wir wenden eine lambda-Funktion lambda x: x**2 auf alle Elemente von DataFrame an, indem wir die Methode DataFrame.apply() verwenden.
Lambda-Funktionen sind einfachere Wege, um Funktionen in Python zu definieren.
lambda x: x**2 repräsentiert die Funktion, die x als Eingabe nimmt und x**2 als Ausgabe zurückgibt.
Beispiel-Codes: Funktion auf jede Spalte mit DataFrame.apply() anwenden
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum)
print("Modified DataFrame")
print(modified_df)
Ausgabe:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
X 6
Y 13
dtype: int64
Hier wird np.sum auf jede Spalte angewendet, weil axis=0 (Standardwert) in diesem Fall.
Wir erhalten also die Summe der Elemente in jeder Spalte nach Anwendung der Methode df.apply().
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2) if x.name == 'X' else x)
print(modified_df)
Ausgabe:
X Y
0 1 4
1 2 1
2 3 8
X Y
0 1 4
1 4 1
2 9 8
Wenn wir die Funktion nur auf bestimmte Spalten anwenden wollen, modifizieren wir unsere Funktionsdefinition unter Verwendung der if-Anweisung, um Spalten zu filtern. Im Beispiel modifiziert die Funktion nur den Wert der Spalten mit dem Spaltennamen X.
Beispiel Codes: Anwenden der Funktion auf jede Zeile mit der Methode DataFrame.apply()
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(np.sum, axis=1)
print("Modified DataFrame")
print(modified_df)
Ausgabe:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
0 5
1 3
2 11
dtype: int64
Hier wird np.sum auf jede Zeile zu einem Zeitpunkt angewendet, wie wir in diesem Fall axis=1 gesetzt haben.
Wir erhalten also die Summe der einzelnen Elemente aller Zeilen, nachdem wir die df.apply() Methode verwendet haben.
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print(df)
modified_df=df.apply(lambda x: (x**2) if x.name in [0,1] else x,
axis=1)
print(modified_df)
Ausgabe:
X Y
0 1 4
1 2 1
2 3 8
X Y
0 1 16
1 4 1
2 3 8
Wenn wir die Funktion nur auf bestimmte Zeilen anwenden wollen, modifizieren wir unsere Funktionsdefinition unter Verwendung der if-Anweisung, um Zeilen zu filtern. Im Beispiel modifiziert die Funktion nur die Werte der Zeilen mit dem Index 0 und 1, d.h. nur die erste und zweite Zeile.
Beispielcodes: DataFrame.apply() Methode mit result_type Parameter
Wenn wir den Standardwert des Parameters result_type verwenden, d.h. None, wird der DataFrame ohne jegliche Änderung zurückgegeben.
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(lambda x:[1,1],axis=1)
print("Modified DataFrame")
print(modified_df)
Ausgabe:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
0 [1, 1]
1 [1, 1]
2 [1, 1]
dtype: object
Im obigen Beispiel wird jede Zeile einzeln an eine Funktion übergeben, und der Wert von row wird auf [1,1] gesetzt.
Wenn wir den Typ des Ergebnisses modifizieren wollen, nachdem die Funktion mit dem DataFrame gearbeitet hat, können wir Werte für den result_type entsprechend unseren Bedürfnissen setzen.
import pandas as pd
df = pd.DataFrame({'X': [1, 2, 3,],
'Y': [4, 1, 8]})
print("Original DataFrame")
print(df)
modified_df=df.apply(lambda x:[1,1],
axis=1,
result_type='expand')
print("Modified DataFrame")
print(modified_df)
Ausgabe:
Original DataFrame
X Y
0 1 4
1 2 1
2 3 8
Modified DataFrame
0 1
0 1 1
1 1 1
2 1 1
Das Setzen von result_type='expand' erweitert alle listenartigen Werte zu Spalten eines DataFrame.