Anwenden einer Funktion auf mehrere Spalten in einem Pandas DataFrame

In diesem Artikel wird gezeigt, wie man eine Funktion auf mehrere Spalten in Pandas DataFrame anwendet. Wir werden den gleichen DataFrame wie unten in allen Beispielcodes verwenden.

import pandas as pd
import numpy as np

df = pd.DataFrame([
                    [5,6,7,8],
                    [1,9,12,14],
                    [4,8,10,6]
                    ],
                  columns = ['a','b','c','d'])

Ausgabe:

   a  b   c   d
0  5  6   7   8
1  1  9  12  14
2  4  8  10   6

Verwenden Sie apply(), um Funktionen auf Spalten in Pandas anzuwenden

Die Methode apply() erlaubt es, eine Funktion auf einen ganzen DataFrame anzuwenden, entweder über Spalten oder Zeilen. Wir setzen den Parameter axis als 0 für Zeilen und 1 für Spalten.

In den folgenden Beispielen werden wir den Wert eines Beispiel-DataFrames mit der zuvor definierten Funktion inkrementieren:

import pandas as pd
import numpy as np

df = pd.DataFrame([
                    [5,6,7,8],
                    [1,9,12,14],
                    [4,8,10,6]
                    ],
                  columns = ['a','b','c','d'])

def x(a):
    return a + 1 

df_new  = df.apply(x, axis = 1)

print("The original dataframe:")
print(df)
print("The new dataframe:")
print(df_new)

Ausgabe:

The original dataframe:
   a  b   c   d
0  5  6   7   8
1  1  9  12  14
2  4  8  10   6
The new dataframe:
   a   b   c   d
0  6   7   8   9
1  2  10  13  15
2  5   9  11   7

Wir können eine Funktion auch auf mehrere Spalten anwenden, wie unten gezeigt:

import pandas as pd
import numpy as np

df = pd.DataFrame([
                    [5,6,7,8],
                    [1,9,12,14],
                    [4,8,10,6]
                    ],
                  columns = ['a','b','c','d'])

print("The original dataframe:")
print(df)

def func(x):
    return x[0] + x[1]

df['e']  = df.apply(func, axis = 1)

print("The new dataframe:")
print(df)

Ausgabe:

The original dataframe:
   a  b   c   d
0  5  6   7   8
1  1  9  12  14
2  4  8  10   6
The new dataframe:
   a  b   c   d   e
0  5  6   7   8  11
1  1  9  12  14  10
2  4  8  10   6  12

Die neu angehängte Spalte “e” ist die Summe der Daten in den Spalten a und b. Der DataFrame selbst ist das versteckte Argument, das an die Funktion übergeben wird. Auf die Spalten kann mit dem Index zugegriffen werden, wie im obigen Beispiel, oder mit dem Spaltennamen, wie unten gezeigt.

import pandas as pd
import numpy as np

df = pd.DataFrame([
                    [5,6,7,8],
                    [1,9,12,14],
                    [4,8,10,6]
                    ],
                  columns = ['a','b','c','d'])

print("The original dataframe:")
print(df)

df['e']  = df.apply(lambda x: x.a+x.b, axis = 1)

print("The new dataframe:")
print(df)

Es wird die gleiche Operation wie im obigen Beispiel durchgeführt. Wir verwenden hier eine lambda-Funktion. x.a und x.b beziehen sich auf die Spalte a und b im Dataframe.

Verwandter Artikel - Pandas DataFrame

  • Schreiben eines Pandas DataFrame nach CSV