没有聚合功能的情况下如何使用熊猫滚动功能?

时间:2018-10-24 09:17:26

标签: python pandas

我有一个与此相似的数据框:

df = pd.DataFrame({'B': [0, 1, 2, 3, 4]})

我想在熊猫中使用滚动函数,但是滚动后不需要聚合函数(求和,平均值,最小值,最大值,...)。我需要每个窗口的数据。

我可以自己创建一个滑动窗口,但是我的问题是滚动功能。通过在熊猫中使用滚动功能,是否有可能具有类似的功能。

当我使用以下功能时

w = df.rolling(2)

我收到以下结果:

Rolling [window=2,center=False,axis=0]

当我需要这个时:

w = [[0 , 1]
    [1 , 2]
    [2 , 3]
    [3 , 4]]

2 个答案:

答案 0 :(得分:0)

您可以使用np.stride_tricks

import numpy as np
as_strided = np.lib.stride_tricks.as_strided  
win = 2
v = as_strided(df.B, (len(df) - (win - 1), win), (df.B.values.strides * 2))
print(v)

答案 1 :(得分:0)

由于 pandas 1.1 滚动对象是可迭代的,因此您可以这样做:

w = list(df.rolling(2))