Как мне пересчитать серию панд, используя значения около часа - PullRequest
1 голос
/ 19 июня 2019

У меня есть данные временных серий, записанные с частотой 10 минут.Я хочу усреднить значения с интервалом в один час.Но для этого я хочу взять 3 значения до часа и 2 значения после часа, взять среднее значение и присвоить это значение точной часовой отметке времени.

Например, у меня есть серия

index = pd.date_range('2000-01-01T00:30:00', periods=63, freq='10min')
series = pd.Series(range(63), index=index)
series
2000-01-01 00:30:00     0
2000-01-01 00:40:00     1
2000-01-01 00:50:00     2
2000-01-01 01:00:00     3
2000-01-01 01:10:00     4
2000-01-01 01:20:00     5
2000-01-01 01:30:00     6
2000-01-01 01:40:00     7
2000-01-01 01:50:00     8
2000-01-01 02:00:00     9
2000-01-01 02:10:00    10
                       ..
2000-01-01 08:50:00    50
2000-01-01 09:00:00    51
2000-01-01 09:10:00    52
2000-01-01 09:20:00    53
2000-01-01 09:30:00    54
2000-01-01 09:40:00    55
2000-01-01 09:50:00    56
2000-01-01 10:00:00    57
2000-01-01 10:10:00    58
2000-01-01 10:20:00    59
2000-01-01 10:30:00    60
2000-01-01 10:40:00    61
2000-01-01 10:50:00    62
Freq: 10T, Length: 63, dtype: int64

Итак, если я сделаю

series.resample('1H').mean()
2000-01-01 00:00:00     1.0
2000-01-01 01:00:00     5.5
2000-01-01 02:00:00    11.5
2000-01-01 03:00:00    17.5
2000-01-01 04:00:00    23.5
2000-01-01 05:00:00    29.5
2000-01-01 06:00:00    35.5
2000-01-01 07:00:00    41.5
2000-01-01 08:00:00    47.5
2000-01-01 09:00:00    53.5
2000-01-01 10:00:00    59.5
Freq: H, dtype: float64

, первое значение будет средним значением 0, 1, 2 и присвоено часу 0, второе - средним значением для 1:00:00до 1:50:00, присвоено 1:00:00 и т. д.

Я хотел бы получить первое среднее значение по центру в 1:00:00, рассчитанное с использованием значений с 00:30:00 по01:20:00, второе по центру в 02:00:00, рассчитанное с 01:30:00 до 02:20:00 и т. Д. ...

Как лучше всего это сделать?

Спасибо!

1 Ответ

0 голосов
/ 19 июня 2019

Вы должны быть в состоянии сделать это с:

series.index = series.index - pd.Timedelta(30, unit='m')
series_grouped_mean = series.groupby(pd.Grouper(freq='60min')).mean()
series_grouped_mean.index = series_grouped_mean.index + pd.Timedelta(60, unit='m')
series_grouped_mean

Я получил:

2000-01-01 01:00:00     2.5
2000-01-01 02:00:00     8.5
2000-01-01 03:00:00    14.5
2000-01-01 04:00:00    20.5
2000-01-01 05:00:00    26.5
2000-01-01 06:00:00    32.5
2000-01-01 07:00:00    38.5
2000-01-01 08:00:00    44.5
2000-01-01 09:00:00    50.5
2000-01-01 10:00:00    56.5
2000-01-01 11:00:00    61.0
Freq: H, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...