Pandas DataFrame DataFrame.apply() Funktion

Pandas DataFrame DataFrame.apply() Funktion

Suraj Joshi Feb-17, 2021 Nov-05, 2020 Pandas Pandas DataFrame
  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

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.

Verwandter Artikel - Pandas DataFrame

  • Pandas concat Funktion
  • Pandas cut Funktion
  • Pandas DataFrame sort_index() Funktion
  • Pandas DataFrame.idxmax() Funktion
  • Pandas DataFrame.insert() Funktion
  • Pandas DataFrame.resample() Funktion