【问题标题】:using a custom function with arguments on Pandas rolling在 Pandas 滚动时使用带有参数的自定义函数
【发布时间】:2020-09-18 04:49:31
【问题描述】:

为了说明问题

import pandas as pd
import numpy as np    

def testfunc(x, mult=1):
    res = sum(x)*mult
    return res

series = pd.Series(np.random.rand(100), name='test')

我想在大小为 10 的滚动窗口上运行“testfunc”,例如,使用 mult 参数的“系列”。

series.rolling(10).apply(testfunc, raw=False, **{'mult':2})

如果我尝试上述方法,我会收到错误

TypeError: apply() 得到了一个意外的关键字参数 'mult'

从帮助页面看来,这应该是可能的,但我找不到工作示例

【问题讨论】:

    标签: python-3.x pandas numpy


    【解决方案1】:

    根据this docSeries.rolling().apply() 不接受**kwargs。取而代之的是 kwargs 选项,它需要一个字典:

    series.rolling(10).apply(testfunc, raw=False, kwargs={'mult':2})
    

    输出:

    0           NaN
    1           NaN
    2           NaN
    3           NaN
    4           NaN
            ...    
    95    11.782115
    96    10.999794
    97     9.678652
    98     9.669550
    99    10.093348
    Name: test, Length: 100, dtype: float64
    

    【讨论】:

      猜你喜欢
      • 2022-12-10
      • 1970-01-01
      • 2019-11-19
      • 2018-08-13
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多