How to Use Pandas DataFrame apply() in Python

09/16/2021

Contents

In this article, you will learn how to use Pandas DataFrame apply() in Python.

Pandas DataFrame apply()

The apply() function in Pandas DataFrame allows you to apply a function to each row or column of the DataFrame. The apply() function is used to apply a function along an axis of the DataFrame.

Syntax

Here is the syntax of apply() function in Pandas DataFrame:

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
Parameters
  • func: The function to be applied to each row or column of the DataFrame.
  • axis: The axis along which the function is applied. 0 means apply the function to each column, 1 means apply the function to each row.
  • raw: If True, apply the function to a Series of values. If False (default), apply the function to each column or row.
  • result_type: The type of the result. If None (default), the return type is inferred from the result of the function.
  • args: Additional arguments to pass to the function.
Example
Applying a function to each row of a DataFrame

Suppose we have a DataFrame with the following data:

import pandas as pd

data = {'Name': ['John', 'Paul', 'George', 'Ringo'],
        'Age': [32, 21, 44, 55],
        'Country': ['USA', 'UK', 'UK', 'USA']}
df = pd.DataFrame(data)
    Name    Age    Country
0   John    32     USA
1   Paul    21     UK
2   George  44     UK
3   Ringo   55     USA

We can create a function that calculates the length of the name of each person in the DataFrame and apply it to each row of the DataFrame using the apply() function:

def name_length(row):
    return len(row['Name'])

df['Name Length'] = df.apply(name_length, axis=1)
    Name    Age    Country  Name Length
0   John    32     USA      4
1   Paul    21     UK       4
2   George  44     UK       6
3   Ringo   55     USA      5

Here, we defined the function name_length that takes a row of the DataFrame as an argument and returns the length of the Name column for that row. Then we used the apply() function with axis=1 to apply this function to each row of the DataFrame, and we assigned the resulting series to a new column called Name Length.

Applying a function to each column of a DataFrame

Suppose we have a DataFrame with the following data:

import pandas as pd

data = {'A': [1, 2, 3],
        'B': [4, 5, 6],
        'C': [7, 8, 9]}
df = pd.DataFrame(data)
 
   A  B  C
0  1  4  7
1  2  5  8
2  3  6  9

We can create a function that adds a constant value to each column of the DataFrame and apply it to each column of the DataFrame using the apply() function:

def add_constant(col, constant):
    return col + constant

df.apply(add_constant, axis=0, args=(10,))
 
    A