【问题标题】:Getting the wrong window back from df.rolling从 df.rolling 获取错误的窗口
【发布时间】:2020-06-26 08:30:54
【问题描述】:

我正在将一系列数据从 1 分钟间隔转换为 5 分钟间隔。为此,我使用 pandas 的滚动和求和函数,然后尝试以 5 步进行切片。这对我来说很有意义,总结所有内容,然后获取包含我想要的信息的行,即每 5 行。

但是,我的代码并没有按照我的意图进行切片,而是忽略了操作的第 0 行。在附图中,左列是切片代码,右列是未切片代码。正如Picture of Results 所示,第一个切片发生在第 5 行而不是第 4 行(第 5 个数据条目)。我在切片中得到了正确的长度,但显然没有得到我需要的所有数据。我的代码在下面,左边是 tmpL,右边是 tmpR。我希望返回第 4 行和第 9 行,而不是第 5 行和第 10 行。我应该使用什么正确的表示法?

tmpL = df.rolling(window=5).sum()[::5]
tmpR = df.rolling(window=5).sum()

【问题讨论】:

  • [::5] 表示取元素[0][5][10]...取[4][9] ...你可以使用[4::5]
  • 这对我理解 Slices 非常有帮助,但由于您的回答方式,我不知道如何将其标记为已解决。

标签: python pandas slice


【解决方案1】:

如果是我,我会采取以下方法:

tmp_df = df.rolling(window=5).sum()
df_5 = tmp_df[(tmp_df.index % 5) == 4]

df_5 将是您想要的输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2021-04-03
    • 2016-12-16
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多