【问题标题】:Pandas resampling hourly timeseries into hourly proportion timeseries熊猫将每小时时间序列重新采样为每小时比例时间序列
【发布时间】:2013-04-29 06:00:04
【问题描述】:

我正在使用每小时时间序列(日期、时间 (hr)、P)并尝试计算每小时每日总“金额”的比例。我知道我可以使用 Pandas 的 resample('D', how='sum') 来计算 P (DailyP) 的每日总和,但在同一步骤中,我想使用每日 P 来计算每日 P 在每小时(因此,P/DailyP)以每小时时间序列结束(即,与原始频率相同)。我不确定这是否可以在 Pandas 术语中称为“重采样”。 从我对术语的使用中可能很明显,但我绝对是 Python 或编程的新手。如果有人可以建议一种方法来做到这一点,我将不胜感激。 谢谢!

【问题讨论】:

    标签: pandas time-series resampling


    【解决方案1】:

    一种可能的方法是将每日总和重新索引回原始小时索引 (reindex) 并向前填充值(这样每个小时都会获得当天总和的值,fillna):

    df.resample('D', how='sum').reindex(df.index).fillna(method="ffill")
    

    你可以用它来划分你的原始数据框。

    一个例子:

    >>> import pandas as pd
    >>> import numpy as np
    >>> 
    >>> df = pd.DataFrame({'P' : np.random.rand(72)}, index=pd.date_range('2013-05-05', periods=72, freq='h'))
    >>> df.resample('D', 'sum').reindex(df.index).fillna(method="pad")
                                 P
    2013-05-05 00:00:00  14.049649
    2013-05-05 01:00:00  14.049649
    ...
    2013-05-05 22:00:00  14.049649
    2013-05-05 23:00:00  14.049649
    2013-05-06 00:00:00  13.483974
    2013-05-06 01:00:00  13.483974
    ...
    2013-05-06 23:00:00  13.483974
    2013-05-07 00:00:00  12.693711
    2013-05-07 01:00:00  12.693711
    ..
    2013-05-07 22:00:00  12.693711
    2013-05-07 23:00:00  12.693711
    

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 1970-01-01
      • 2018-03-14
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多