Pandas DataFrame DataFrame.apply() Funktion
-
Syntax von
pandas.DataFrame.apply(): -
Beispiel-Codes:
DataFrame.apply()Methode -
Beispiel-Codes: Funktion auf jede Spalte mit
DataFrame.apply()anwenden -
Beispiel Codes: Anwenden der Funktion auf jede Zeile mit der Methode
DataFrame.apply() -
Beispielcodes:
DataFrame.apply()Methode mitresult_typeParameter
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.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn