首页 > 解决方案 > Pandas 自定义指数衰减

问题描述

假设我有以下数据框。

df = pd.DataFrame({"a": [1, 0, 0, 2, 0]})

我想构建一个基于 df 的新数据框

newdf[0] = 1 or nan
newdf[1] = 0 + newdf[0] * exp(-alpha) # Alpha is some value.
newdf[2] = 0 + newdf[1] * exp(-alpha)
newdf[3] = 2 + newdf[2] * exp(-alpha)
newdf[4] = 0 + newdf[3] * exp(-alpha)

基本上我想构建一个新的数据框,它接受瞬时变化并衰减它自己的值。

有没有一种优雅的方式来实现这个使用pd.rollingor pd.ewm?我想避免任何 for 循环,因为数据框有很多行和列。

谢谢

标签: pythonpandasdataframe

解决方案


利用 -

alpha = 2
df['new'] = 1 or np.nan
df['new'] = df['a'] + df['a'].shift(-1)*np.exp(-alpha)

import numpy as np是一个依赖。df遗嘱中的最后一行就是以此为np.nan基础的。


推荐阅读