我正在处理每小时的时间序列(日期,时间(小时),P)并尝试计算每小时每日总“数量”的比例。我知道我可以让我们Pandas的重新采样('D',怎么='sum')来计算P(DailyP)的每日总和,但在同一步骤中,我想用每日P来计算每日P的比例每小时(因此,P / DailyP)以小时时间序列结束(即,与原始时间序列相同)。我不确定这在Pandas术语中是否甚至可以被称为“重新采样”。 这可能从我对术语的使用中可以明显看出,但我是Python的绝对新手还是编程。如果有人可以建议一种方法来做到这一点,我会非常感激。 谢谢!
答案 0 :(得分:4)
一种可能的方法是将每日总和重新索引回原始小时指数(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