Skip to content
Advertisement

Rename dataframe columns with a mapper function that takes parameters

How can I pass along parameters to a mapper function in pandas.DataFrame.rename? The example below uses a mapper function test. I want to change it’s behavior based on an additional parameter that I pass along.

def test(x):
    return "A" + x

df.rename(mapper=test, axis='columns')

In this example, the mapper function appends an "A" to each column name. I want the mapper not always to append an "A" but a character that I give as parameter in the function call. So my question is: how can I pass along additional parameters to the function test?

Advertisement

Answer

IIUC, you can use functools.partial:

import pandas as pd
from functools import partial

print(pd.__version__)
#0.23.4

df = pd.DataFrame({"col1": ['a', 'b', 'c'], "col2": [1, 2, 3]})

def test(col, x):
    return x + col

df.rename(mapper=partial(test, x="abc_"), axis='columns')
#  abc_col1  abc_col2
#0        a         1
#1        b         2
#2        c         3
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement