【问题标题】:Computing the difference between first and last values in a rolling window计算滚动窗口中第一个值和最后一个值之间的差异
【发布时间】:2023-03-21 01:35:01
【问题描述】:

我在索引为日期时间格式的单列数据框上使用 Pandas 滚动窗口工具。

我想为每个窗口计算所述窗口的第一个值和最后一个值之间的差异。给出 lambda 函数时如何引用相对索引? (在下面的括号中)

df2 = df.rolling('3s').apply(...)

【问题讨论】:

    标签: python pandas dataframe lambda sliding-window


    【解决方案1】:

    IIUC:

    In [93]: df = pd.DataFrame(np.random.randint(10,size=(9, 3)))
    
    In [94]: df
    Out[94]:
       0  1  2
    0  7  4  5
    1  9  9  3
    2  1  7  6
    3  0  9  2
    4  2  3  7
    5  6  7  1
    6  1  0  1
    7  8  4  7
    8  0  0  9
    
    In [95]: df.rolling(window=3).apply(lambda x: x[0]-x[-1])
    Out[95]:
         0    1    2
    0  NaN  NaN  NaN
    1  NaN  NaN  NaN
    2  6.0 -3.0 -1.0
    3  9.0  0.0  1.0
    4 -1.0  4.0 -1.0
    5 -6.0  2.0  1.0
    6  1.0  3.0  6.0
    7 -2.0  3.0 -6.0
    8  1.0  0.0 -8.0
    

    【讨论】:

    • 如果您还想要每个窗口的第一行和最后一行怎么办?尝试了 apply 方法,它可以工作,但无法很好地扩展。
    • 有没有办法在没有应用的情况下做到这一点?申请非常慢
    猜你喜欢
    • 1970-01-01
    • 2023-01-30
    • 2022-11-30
    • 2017-12-18
    • 2023-01-18
    • 1970-01-01
    • 2021-11-19
    • 2020-05-25
    • 2019-01-24
    相关资源
    最近更新 更多