我有一个 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
甚至自己创建一个窗口函数?
答案 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()
df.rolling(window=3, win_type='exponential').mean(tau=10)
不要犹豫添加其他版本的依赖项。
答案 1 :(得分:0)
从 Stepan 提供的链接中找到答案: Tau 必须在函数调用中传递,即
df.rolling(window=(3), win_type='exponential').mean(tau=10)