Funktion auf jede Zeile im Pandas DataFrame anwenden
-
Grundlegende Syntax der Pandas
apply()
Funktion -
Anwenden der
lambda
-Funktion auf jede Zeile im PandasDataFrame
-
Wenden Sie eine
NumPy
-Funktion auf jede Reihe von PandasDataFrame
an -
Anwenden einer benutzerdefinierten Funktion auf jede Zeile von Pandas
DataFrame
mit Argumenten -
Anwenden einer benutzerdefinierten Funktion auf jede Zeile von Pandas
DataFrame
ohne Argumente
Pandas ist eine Python-Bibliothek, die eine riesige Liste von Klassen und Funktionen zur einfacheren Durchführung von Datenanalyse- und Manipulationsaufgaben bietet. Wir manipulieren Daten im Pandas DataFrame
in Form von Zeilen und Spalten. Daher müssen wir meistens die entsprechenden Funktionen auf jede Zeile oder Spalte anwenden, um die gewünschten Ergebnisse zu erzielen.
In diesem Artikel erfahren Sie, wie Sie Pandas verwenden, um Funktionen auf jede Zeile in Pandas DataFrame
anzuwenden. Darüber hinaus zeigen wir, wie Sie verschiedene Funktionen wie die Funktion lambda
, eine benutzerdefinierte Funktion und die Funktion NumPy
auf jede Zeile in einem Pandas DataFrame anwenden.
Grundlegende Syntax der Pandas apply()
Funktion
Die folgende grundlegende Syntax wird verwendet, um die Funktion apply()
von Pandas anzuwenden:
DataFrame.apply(function, axis, args=())
Siehe In der obigen Syntax ist die Funktion auf jede Zeile anzuwenden. Die axis
ist das Argument, entlang dem die Funktion im DataFrame angewendet wird. Standardmäßig ist der Wert axis
0
. Der Wert von axis=1
, wenn die Funktion für jede Zeile gilt. Die args
stellen das Tupel oder die Liste von Argumenten dar, die an die Funktion übergeben werden.
Mit der pandas-Funktion apply()
können wir ganz einfach unterschiedliche Funktionen auf jede Zeile im DataFrame
anwenden. Die nachfolgend aufgeführten Wege helfen uns, dieses Ziel zu erreichen:
Anwenden der lambda
-Funktion auf jede Zeile im Pandas DataFrame
Um die Funktion lambda
auf jede Zeile im DataFrame
anzuwenden, haben wir die Funktion lambda
als erstes Argument im DataFrame
verwendet und axis=1 als zweites Argument im dataframe.apply()
unter Verwendung des oben erstellten DataFrame
übergeben.
Um zu sehen, wie Sie die Funktion lambda
auf jede Zeile im DataFrame anwenden, versuchen Sie das folgende Beispiel:
Beispielcodes:
import pandas as pd
import numpy as np
from IPython.display import display
# List of Tuples data
data = [
(1, 34, 23),
(11, 31, 11),
(22, 16, 21),
(33, 32, 22),
(44, 33, 27),
(55, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe before applying lambda function: ", sep="\n")
display(dataframe)
# Apply a lambda function to each row by adding 10
new_dataframe = dataframe.apply(lambda x: x + 10, axis=1)
print("Modified New Dataframe by applying lambda function on each row:")
display(new_dataframe)
Ausgabe:
Original Dataframe before applying lambda function:
A B C
0 1 34 23
1 11 31 11
2 22 16 21
3 33 32 22
4 44 33 27
5 55 35 11
Modified Dataframe by applying lambda function on each row:
A B C
0 11 44 33
1 21 41 21
2 32 26 31
3 43 42 32
4 54 43 37
5 65 45 21
Wenden Sie eine NumPy
-Funktion auf jede Reihe von Pandas DataFrame
an
Wir können auch die Funktion NumPy
verwenden, die als Argument an dataframe.apply()
übergeben wird. Im folgenden Beispiel wenden wir die Funktion NumPy
auf jede Zeile an und berechnen die Quadratwurzel jedes Wertes.
Beispielcodes:
import pandas as pd
import numpy as np
from IPython.display import display
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a numpy function to every row by taking square root of each value
new_dataframe = dataframe.apply(np.sqrt, axis=1)
print("Modified Dataframe by applying numpy function on each row:", sep="\n")
display(new_dataframe)
if __name__ == "__main__":
main()
Ausgabe:
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying numpy function on each row:
A B C
0 1.414214 1.732051 2.000000
1 1.732051 2.236068 3.162278
2 6.633250 4.000000 1.414214
3 7.416198 5.656854 3.464102
4 7.745967 5.744563 5.196152
5 8.774964 5.916080 3.316625
Anwenden einer benutzerdefinierten Funktion auf jede Zeile von Pandas DataFrame
mit Argumenten
Wir können auch die Funktion benutzerdefiniert als Parameter im dataframe.apply
mit einem Argument übergeben. Im folgenden Beispiel haben wir eine benutzerdefinierte Funktion mit dem Argument args=[2]
übergeben. Jede Zeilenwertreihe wird mit 2 multipliziert.
Siehe folgendes Beispiel:
Beispielcode:
import pandas as pd
import numpy as np
from IPython.display import display
def multiplyData(x, y):
return x * y
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a user defined function with arguments to each row of Pandas dataframe
new_dataframe = dataframe.apply(multiplyData, axis=1, args=[2])
print(
"Modified Dataframe by applying user defined function on each row of pandas dataframe:",
sep="\n",
)
display(new_dataframe)
if __name__ == "__main__":
main()
Ausgabe:
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying user defined function on each row of pandas dataframe:
A B C
0 4 6 8
1 6 10 20
2 88 32 4
3 110 64 24
4 120 66 54
5 154 70 22
Anwenden einer benutzerdefinierten Funktion auf jede Zeile von Pandas DataFrame
ohne Argumente
Wir können auch ohne Argumente eine benutzerdefinierte Funktion auf jede Zeile anwenden. Siehe folgendes Beispiel:
Beispielcodes:
import pandas as pd
import numpy as np
from IPython.display import display
def userDefined(x):
return x * 4
def main():
# List of Tuples
data = [
(2, 3, 4),
(3, 5, 10),
(44, 16, 2),
(55, 32, 12),
(60, 33, 27),
(77, 35, 11),
]
# Create a DataFrame object
dataframe = pd.DataFrame(data, columns=list("ABC"))
print("Original Dataframe", sep="\n")
display(dataframe)
# Apply a user defined function without arguments to each row of Pandas dataframe
new_dataframe = dataframe.apply(userDefined, axis=1)
print(
"Modified Dataframe by applying user defined function on each row of pandas dataframe:",
sep="\n",
)
display(new_dataframe)
if __name__ == "__main__":
main()
Ausgabe:
Original Dataframe
A B C
0 2 3 4
1 3 5 10
2 44 16 2
3 55 32 12
4 60 33 27
5 77 35 11
Modified Dataframe by applying user defined function on each row of pandas dataframe:
A B C
0 8 12 16
1 12 20 40
2 176 64 8
3 220 128 48
4 240 132 108
5 308 140 44
Verwandter 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