【问题标题】:Pandas Apply with Change in Function's InputPandas 应用函数输入的变化
【发布时间】:2021-01-20 10:46:59
【问题描述】:

假设我有一个简单的函数,它可以找到变量 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。谢谢。

【问题讨论】:

    标签: python pandas function apply


    【解决方案1】:

    我认为您需要在Series.apply 中传递参数**kwargs

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

    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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 2015-07-05
      • 2021-08-07
      • 2021-01-11
      • 2020-08-03
      • 2022-12-07
      • 1970-01-01
      相关资源
      最近更新 更多