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

问题描述 投票:-2回答:1

如何将参数传递给pandas.DataFrame.rename中的映射器函数?下面的示例使用映射器函数test。我想基于我传递的附加参数来改变它的行为。

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

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

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

python pandas dataframe
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.