簡體   English   中英

將lambda函數應用於熊貓滾動窗口系列

[英]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

您傳遞的函數的其他參數在argskwargs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM