Измените значение на меньшие значения - PullRequest
0 голосов
/ 02 апреля 2020
2020-04-02 00:00:00+03:00    32.7171
2020-04-02 00:15:00+03:00        NaN
2020-04-02 00:30:00+03:00        NaN
2020-04-02 00:45:00+03:00        NaN
2020-04-02 01:00:00+03:00    70.2465
2020-04-02 01:15:00+03:00        NaN
2020-04-02 01:30:00+03:00        NaN
2020-04-02 01:45:00+03:00        NaN

У меня есть этот тип данных, он показывает производство солнечной энергии в период с 00:00:00 -> 01:00:00 до 01:00:00 -> 02:00:00 часов

Мне нужно распределить значения 32.7171 и 70.2465 в соответствующие часы. Это означает, что сумма значений между 00:00:00 -> 01:00:00 не должна превышать 32,7171, поскольку это общая энергия, которая будет в этот полный час, то же самое относится и к интервалу между 01:00:00 -> 02: 00: 00

Самый простой случай - я делю 32.7171 и 70.2465 равным образом на 4 части и присваиваю значение соответствующие строки (4 строки по 1 часу каждые 15 минут)

Интерполяция просто заполняет NaN, а сумма значений между интервалами в 1 час неверна. То же самое касается повторной выборки scipy.

Есть ли лучшее решение для достижения этой цели?

1 Ответ

0 голосов
/ 02 апреля 2020

Я бы сгруппировал по часам и преобразовал бы среднее значение:

df['time'] = pd.to_datetime(df['time'])

df['value'] = (df['value'].fillna(0)
                   .groupby(df['time'].dt.floor('H'))
                   .transform('mean')

Вывод:

                       time      value
0 2020-04-02 00:00:00+03:00   8.179275
1 2020-04-02 00:15:00+03:00   8.179275
2 2020-04-02 00:30:00+03:00   8.179275
3 2020-04-02 00:45:00+03:00   8.179275
4 2020-04-02 01:00:00+03:00  17.561625
5 2020-04-02 01:15:00+03:00  17.561625
6 2020-04-02 01:30:00+03:00  17.561625
7 2020-04-02 01:45:00+03:00  17.561625
...