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