我有一个数据集:
Open High Low Close
0 132.960 133.340 132.940 133.105
1 133.110 133.255 132.710 132.755
2 132.755 132.985 132.640 132.735
3 132.730 132.790 132.575 132.685
4 132.685 132.785 132.625 132.755
我尝试对所有行使用rolling.apply函数,如下所示:
df['new_col']= df[['Open']].rolling(2).apply(AccumulativeSwingIndex(df['High'],df['Low'],df['Close']))
或者
df['new_col']= df[['Open', 'High', 'Low', 'Close']].rolling(2).apply(AccumulativeSwingIndex)
有人能帮我吗?
尝试此操作以传递要应用的多个列
由于滚动窗口不太大,我认为您也可以将它们放在同一个数据帧中,然后使用
apply
函数来减少。例如,数据集
df
如下所示您只需使用
然后你就可以用你想要的所有滚动数据轻松地应用它
定义自己的
roll
我们可以创建一个接受窗口大小参数
注意:我不需要使用w
和任何其他关键字参数的函数。我们使用它来构建一个新的DataFrame
,在其中,我们将调用groupby
,同时通过kwargs
传递关键字参数。stride_tricks.as_strided
,但它很简洁,在我看来是合适的。我们还可以使用
pandas.DataFrame.pipe
方法来实现相同的效果:旧答案
已弃用{}。有关更新的答案,请参见上文。
见https://stackoverflow.com/a/37491779/2336654
定义我们自己的
roll
你应该能够:
使用
mean
相关问题 更多 >
编程相关推荐