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