4

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

4

1 回答 1

5

一种可能的方法是将每日总和重新索引回原来的每小时索引 ( 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
于 2013-05-05T11:53:11.110 回答