如何在pandas数据帧中应用带有窗口参数的自定义函数?

2024-09-30 20:23:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须遵循熊猫数据帧:

a

1.0
1.5
1.3
1.2
1.9
0.8

然后我想将我的新自定义函数应用到这个列中,它有一个window参数,我的意思是,它只需要从起始点开始处理n个项目:

^{pr2}$

因此,为了将此函数应用到名为b的新列中,我使用了以下方法:

df['b'] = hislack(df['a'].values, 3)

但它返回以下值:

a     b

1.0   3.9
1.5   3.9
1.3   3.9
1.2   3.9
1.9   3.9
0.8   3.9

这是最后一行的结果:0.8 + 1.9 + 1.2 = 3.9

因此,预期产出为:

a     b

1.0   Nan
1.5   Nan
1.3   3.8
1.2   4.0
1.9   4.4
0.8   3.9

如何防止对所有行应用相同的公式结果?在


Tags: 数据项目方法函数df参数nanwindow
1条回答
网友
1楼 · 发布于 2024-09-30 20:23:10

您需要DataFrame.rolling

df['a'].rolling(3).sum()       # here 3 is the window parameter for your function and sum
                               # is the function/operation you want to apply to each window
#0    NaN
#1    NaN
#2    3.8
#3    4.0
#4    4.4
#5    3.9
#Name: a, dtype: float64

或者:

^{pr2}$

一般来说,您可以这样做:df['a'].rolling(window).apply(fun),其中将window参数传递给rolling,将函数传递给apply。在

相关问题 更多 >