Как я могу найти сумму нескольких групп в серии? - PullRequest
1 голос
/ 30 апреля 2019

У меня есть короткий ряд ~ 60 значений. Что мне нужно сделать, так это найти наибольшую сумму из 24 последовательных значений в серии.

например. Мне нужно было бы найти суммы групп [0:23], [1:24], [2:25], [3:26], ..., [37:60] и определить, какую группу имеет самую большую сумму.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Поскольку ваш Series маленький, вы можете использовать простое dict понимание:

import numpy as np
import pandas as pd

from operator import itemgetter

s = pd.Series(np.random.randint(1, 10, size=60))

result = {f'{i} - {i + 24}': s[i:i + 24].sum() for i in range(len(s) - 24)}

max(result.items(), key=itemgetter(1))[0]

Выход:

'6 - 30'
0 голосов
/ 30 апреля 2019

Вы можете использовать метод прокатки в серии: serie.rolling(24).sum()

Чтобы получить непосредственно максимум max_idx = serie.rolling(24).sum().idxmax()

Ваш диапазон интересов [max_idx-24+1:max_idx] (из индекса max_idx - 24 + 1для индексации max_idx (оба включены), поэтому будьте осторожны, если вы хотите получить эти элементы, с .loc все будет в порядке, но если вы вернетесь к исходному списку или если используете iloc, вам придется перейти кmax_idx + 1.

...