【问题标题】:Resample daily pandas timeseries with start at time other than midnight [duplicate]从午夜以外的时间开始重新采样每日熊猫时间序列[重复]
【发布时间】:2013-12-04 11:56:03
【问题描述】:

我有一个 10 分钟频率数据的 pandas 时间序列,需要找到每个 24 小时内的最大值。然而,这个 24 小时的时间段需要从每天早上 5 点开始——而不是 pandas 假定的默认午夜。

我一直在查看DateOffset,但到目前为止我还在画空白。我可能已经预料到类似于pandas.tseries.offsets.Week(weekday=n) 的东西,例如pandas.tseries.offsets.Week(hour=5),但据我所知不支持。

我可以先通过shifting 数据来做一个令人讨厌的工作,但这很不直观,甚至在一周后我又回到相同的代码中,我在转移方向上遇到了问题!

任何更优雅的想法将不胜感激。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    base 关键字可以解决问题(请参阅docs):

    s.resample('24h', base=5)
    

    例如:

    In [35]: idx = pd.date_range('2012-01-01 00:00:00', freq='5min', periods=24*12*3)
    
    In [36]: s = pd.Series(np.arange(len(idx)), index=idx)
    
    In [38]: s.resample('24h', base=5)
    Out[38]: 
    2011-12-31 05:00:00     29.5
    2012-01-01 05:00:00    203.5
    2012-01-02 05:00:00    491.5
    2012-01-03 05:00:00    749.5
    Freq: 24H, dtype: float64
    

    【讨论】:

      【解决方案2】:

      我刚刚发现了一个以前在 Google 或 Stack Overflow 上没有出现的已回答问题:

      Resample hourly TimeSeries with certain starting hour

      这使用了 base 参数,它看起来像是 Wes McKinney 的 Python for Data Analysis 之后的附加参数。我已经尝试了该参数,它似乎可以解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-09
        • 2017-02-20
        • 1970-01-01
        • 2021-03-11
        • 1970-01-01
        • 1970-01-01
        • 2013-04-29
        • 1970-01-01
        相关资源
        最近更新 更多