我有一个函数,它接受一个数组和一个值,并返回一个值。我想将其应用到我的系列中s
在滚动的基础上,所以数组始终是滚动窗口。这是我尝试过(不成功)的一个最小示例,使用np.random.choice
代替我真正的功能。我找到了很多查找滚动均值和其他内置函数的示例,但无法让它适用于我的任意 lambda 函数。
s = pd.Series([1,2,3,4,5,6,7,8,9])
rolling_window = s.rolling(3)
第一次尝试:
new_values = s.apply(lambda x: np.random.choice(rolling_window, size=1))
ValueError: a [a 是 choice() 的第一个位置参数,因此引用 'rolling_window'] 必须是一维或整数
另一种尝试:
new_values = rolling_window.apply(lambda x: np.random.choice(size=1))
TypeError: choice() 至少需要 1 个位置参数(给定 0 个)
...如何在系列中的每个滚动数组窗口上对系列中的每个值应用任意 lambda 函数(采用数组和值)?
IIUC,如果您只想在窗口上应用一个函数,那么您的第二次尝试很接近:
rolling_window.apply(lambda x: np.random.choice(x, size=1))
但是,您可以规避使用lambda
像这样:
rolling_window.apply(np.random.choice, kwargs={'size' : 1})
0 NaN
1 NaN
2 1.0
3 4.0
4 4.0
5 5.0
6 7.0
7 7.0
8 8.0
dtype: float64
您传递给函数的附加参数进入args
and kwargs
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)