Pandas将小时时间序列重新采样为小时比例时间序列

Pandas将小时时间序列重新采样为小时比例时间序列,pandas,time-series,resampling,Pandas,Time Series,Resampling,我正在处理一个小时时间序列(日期、时间(hr)、p),并试图计算每小时每天总“金额”的比例。我知道我可以用熊猫的重采样('D',how='sum')来计算P的每日总和(DailyP),但在同一步骤中,我想用每日P来计算每小时内每日P的比例(因此,P/DailyP),从而得出每小时的时间序列(即,与原始频率相同)。我不确定这是否可以称为“重采样”。 从我使用的术语来看,这一点可能很明显,但在Python或编程方面,我绝对是个新手。如果有人能提出这样做的建议,我将非常感激。 谢谢 一种可能的方法是将

我正在处理一个小时时间序列(日期、时间(hr)、p),并试图计算每小时每天总“金额”的比例。我知道我可以用熊猫的重采样('D',how='sum')来计算P的每日总和(DailyP),但在同一步骤中,我想用每日P来计算每小时内每日P的比例(因此,P/DailyP),从而得出每小时的时间序列(即,与原始频率相同)。我不确定这是否可以称为“重采样”。 从我使用的术语来看,这一点可能很明显,但在Python或编程方面,我绝对是个新手。如果有人能提出这样做的建议,我将非常感激。
谢谢

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

您可以使用它来分割原始数据帧

例如:

>>> 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
>>> 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