【问题标题】:Pandas: Updating a rolling average only every minute for one second dataPandas:仅每分钟更新一秒数据的滚动平均值
【发布时间】:2021-01-07 22:08:44
【问题描述】:

我有一个数据框,其中数据行的间隔为一秒,因此 08:00:00、08:00:01 等。我想在 10 分钟内取一个滚动平均值,但我只想要滚动平均值每分钟更新一次。因此,08:10:00 - 08:10:59 的滚动平均值都将是相同的值,然后在 8:11:00,它将更新为下一分钟的新值。

目前我正在使用以下行来计算每秒更新的滚动平均值:

df['counts-avg'] = df['counts'].rolling(window=600).mean()

【问题讨论】:

  • 出了什么问题
  • 一切正常。我只是不确定如何做我想做的事。此命令具有每秒变化的滚动平均值。我希望它每 60 秒只进行一次滚动平均更新。
  • df.groupby(df.index // 600).first()?或者类似的东西?

标签: python pandas


【解决方案1】:

我还有另一列称为 df['sec'] 的秒值。我得到了秒 = 0(每分钟的第零秒)的行的索引,并用 np.nan 替换了每隔一行。然后我使用 fillna(method='ffill') 向下复制值。

df['counts-avg'] = df['counts'].rolling(window=600).mean()
erase_idx = df[df['sec'] > 0].index.values
ma = df['counts-avg']
ma.loc[erase_idx] = np.nan
ma = ma.fillna(method='ffill')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 2019-07-03
    • 2020-05-19
    • 2019-04-07
    • 2021-06-16
    • 2021-08-07
    相关资源
    最近更新 更多