[英]Applying lambda function to a pandas rolling window series
我有一個函數,它接受一個數組和一個值,並返回一個值。 我想將它應用到我的系列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
和kwargs
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.