在熊猫滚动中应用自定义窗口函数

时间:2021-01-10 11:11:08

标签: python pandas window-functions rolling-computation

我有一个 DataFrame,例如

df = pd.DataFrame([1,2,3,4,5,6,7,8,9])

现在我想应用滚动平均值,例如

df.rolling(window=3, win_type=None).mean()

这给了我一个具有均匀加权元素的结果。 现在我想改变窗口函数。我知道,这可以通过将字符串(例如 'hann')传递给 win_type 参数来实现。

df.rolling(window=3, win_type='hann').mean()

现在对我来说有趣的一点是应用一个窗口函数,它使用指数衰减的权重,给“右边”的值赋予高权重,给“更靠左”的值赋予较低的权重。这应该可以通过使用 scipy.signal.windows.exponential 并调整参数来实现。但是,我正在努力传递这些参数,因为 win_type 只接受字符串。

当我尝试 win_type='exponential' 时,我得到 ValueError: exponential window requires tau

谁能告诉我如何将tau等参数传递给win_type甚至自己创建一个窗口函数?

2 个答案:

答案 0 :(得分:1)

答案是here
重要。解决方案取决于熊猫版本。
Python常见

import pandas as pd
df = pd.DataFrame([1,2,3,4,5,6,7,8,9])

tau=10 的情况下。
对于 Pandas='0.24.2'

df.rolling(window=(3,10), win_type='exponential').mean()

对于 Pandas='1.1.3'
df.rolling(window=3, win_type='exponential').mean(tau=10)

不要犹豫添加其他版本的依赖项。

答案 1 :(得分:0)

从 Stepan 提供的链接中找到答案: Tau 必须在函数调用中传递,即

df.rolling(window=(3), win_type='exponential').mean(tau=10)