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.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedInVerwandter Artikel - Pandas DataFrame
- Wie man Pandas DataFrame-Spaltenüberschriften als Liste erhält
- Pandas DataFrame-Spalte löschen
- Wie man DataFrame-Spalte in Datetime in Pandas konvertiert
- Wie konvertiert man eine Fließkommazahl in eine Ganzzahl in Pandas DataFrame
- Wie man Pandas-DataFrame nach den Werten einer Spalte sortiert
- Wie erhält man das Aggregat der Pandas gruppenweise und sum