将 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 数据帧,在一个时间列上重新采样,插值