首页 > 解决方案 > Pandas 应用函数输入的变化

问题描述

假设我有这个简单的函数,它可以找到变量 x 和比较值之间的最大数(可以是任何值)。

def find_max(x, comparison_value = 2):
    if x > comparison_value:
        y = x
    else:
        y = comparison_value
    
    return y

我想将此功能应用于数据框:

abcd = pd.DataFrame([[1,2],[2,5],[3,4]], columns= ['col1','col2'])

   col1  col2
0     1     2
1     2     5
2     3     4

abcd.col1.apply(find_max)

我的问题是:当我使用 pandas.apply 时,有没有办法让我也改变函数的输入?例如,现在我想将比较值更改为 3 而不是 2。谢谢。

标签: pythonpandasfunctionapply

解决方案


我认为你需要传递**kwargs参数Series.apply

定义一个接受关键字参数并将这些参数传递给应用的自定义函数。

def add_custom_values(x, **kwargs):

    for month in kwargs:

        x += kwargs[month]

    return x

s.apply(add_custom_values, june=30, july=20, august=25)
London      95
New York    96
Helsinki    87
dtype: int64

因此,在您的解决方案中使用:

print (abcd.col1.apply(find_max, comparison_value=3))

推荐阅读