将 pandas 中的时间序列重新采样为每周间隔

Posted

技术标签:

【中文标题】将 pandas 中的时间序列重新采样为每周间隔【英文标题】:Resample time series in pandas to a weekly interval 【发布时间】:2013-01-09 22:24:03 【问题描述】:

如何将 pandas 中的时间序列重新采样为每周频率,其中每周从任意一天开始?我看到有一个可选的关键字库,但它只适用于短于一天的间隔。

【问题讨论】:

【参考方案1】:

您可以将anchored offsets 传递给resample,以及他们涵盖此案例的其他选项。

例如从星期一开始的每周频率:

ts.resample('W-MON')

【讨论】:

这在某些情况下会给你带来非常意想不到的结果:github.com/pandas-dev/pandas/issues/16381 这意味着一个周末以星期一结束。默认为星期日。【参考方案2】:

根据天数重新采样然后每 7 天切片会更安全,例如:

ts.resample('D').interpolate()[::7]

在 github 上的这个 open pandas issue 中查看其他方法的潜在问题:

https://github.com/pandas-dev/pandas/issues/16381

【讨论】:

这是如何计算这些值的?它返回平均值吗?【参考方案3】:

Andy Haydens 和 denfromufas 的答案都对我不起作用,但确实如此: df.resample('W', label='left', loffset=pd.DateOffset(days=1))

如该答案所述:https://***.com/a/46712821/1743551

【讨论】:

【参考方案4】:

您可能需要仔细检查您的结果。 loffset 似乎用于更改采样索引上的 labels,而不是用于重新采样的实际基础时间段。如果您阅读最新的文档,不推荐使用 loffset 参数,他们建议在重新采样后修改索引,这再次指向更改标签,而不是如何计算结果值。 offset 关键字似乎适用,但我运气不佳。

https://pandas.pydata.org/pandas-docs/dev/reference/api/pandas.DataFrame.resample.html

【讨论】:

以上是关于将 pandas 中的时间序列重新采样为每周间隔的主要内容,如果未能解决你的问题,请参考以下文章

无法从 1 分钟到 5 分钟的数据重新采样 pandas 时间序列

合并两个 Pandas 数据帧,在一个时间列上重新采样,插值

如何重新采样日内间隔并使用 .idxmax()?

将 pandas iso 周数转换为常规周数

Pandas 将 5 分钟数据重新采样为每小时平均值:日期问题 [重复]

Pandas 0.18.1 groupby 和多级聚合错误重新采样