使用带有参数的映射器函数重命名数据框列

时间:2019-03-19 16:29:13

标签: python pandas dataframe

如何将参数传递给pandas.DataFrame.rename中的映射器函数?下面的示例使用一个映射器函数test。我想根据传递的其他参数更改其行为。

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

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

在此示例中,映射器函数将"A"附加到每个列名称。我希望映射器不总是附加一个"A"而是一个我在函数调用中作为参数给出的字符。所以我的问题是:如何将其他参数传递给函数test

1 个答案:

答案 0 :(得分:0)

IIUC,您可以使用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