Pandas DataFrame DataFrame.apply() Funktion

  1. Syntax von pandas.DataFrame.apply():
  2. Beispiel-Codes: DataFrame.apply() Methode
  3. Beispiel-Codes: Funktion auf jede Spalte mit DataFrame.apply() anwenden
  4. Beispiel Codes: Anwenden der Funktion auf jede Zeile mit der Methode DataFrame.apply()
  5. Beispielcodes: DataFrame.apply() Methode mit result_type Parameter
Pandas DataFrame DataFrame.apply() Funktion

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.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Pandas DataFrame