Funktion auf jede Zeile im Pandas DataFrame anwenden

Samreena Aslam 23 Januar 2022
  1. Grundlegende Syntax der Pandas apply() Funktion
  2. Anwenden der lambda-Funktion auf jede Zeile im Pandas DataFrame
  3. Wenden Sie eine NumPy-Funktion auf jede Reihe von Pandas DataFrame an
  4. Anwenden einer benutzerdefinierten Funktion auf jede Zeile von Pandas DataFrame mit Argumenten
  5. Anwenden einer benutzerdefinierten Funktion auf jede Zeile von Pandas DataFrame ohne Argumente
Funktion auf jede Zeile im Pandas DataFrame anwenden

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

Pandas wenden Funktion auf jede Zeile an - Lambda

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

Pandas wenden Funktion auf jede Zeile an - numpy

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

Pandas wenden Funktion auf jede Zeile an - benutzerdefiniert

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

Pandas wenden Funktion auf jede Zeile an - benutzerdefiniert

Verwandter Artikel - Pandas DataFrame