2013-05-05 3 views
2

Я работаю с часовым временным рядом (дата, время (час), P) и пытаясь рассчитать долю суточной суммы «Сумма» за каждый час. Я знаю, что я смогу нам перепрограммировать Pandas ('D', how = 'sum'), чтобы рассчитать суточную сумму P (DailyP), но на том же шаге я бы хотел использовать ежедневную P для вычисления доли ежедневного P в каждый час (так, P/DailyP) заканчивается часовым временным рядом (т. е. той же частотой, что и оригинал). Я не уверен, что это можно назвать «повторной выборкой» в терминах Панды. Это, вероятно, видно из моего использования терминологии, но я абсолютный новичок на Python или программирование в этом отношении. Если кто-то может предложить способ сделать это, я бы очень признателен. Спасибо!Pandas передискретизация почасового таймсерия в часовую пропорцию timeseries

ответ

3

Возможный подход к переиндексации ежедневных сумм обратно к первоначальному почасовому индексу (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 
Смежные вопросы