Я работаю с фреймом данных с 800k записями и хочу создать более быстрый способ получения значений индекса между условием суммы по сравнению с моей текущей рабочей версией, выполняющей df.iterrows (). У меня есть столбец, который я хочу суммировать до значения, а затем сбросить начальные позиции индекса суммы, чтобы начать цикл заново.
Простым примером будет любое суммированное значение больше 1000.
series = [193, 371, 163, 287, 627, 323, 382, 263, 361, 501, 282, 411, 335, 528, 396, 465, 309, 243, 348, 387, 416, 446, 464, 227, 301]
series = pd.Series(series)
target_value = 1000
start = 0
end = 0
sum_values = series[start:end+1].sum()
index_values = []
for indx, val in series.iteritems():
if sum_values >= target_value:
index_values.append([start, end])
sum_values = series[end+1]
start = end
end += 1
else:
sum_values = series[start:end+1].sum()
end += 1
index_values:
[[0, 4], [4, 7], [7, 10], [10, 13], [13, 16], [16, 20], [20, 23]]
Я не могу понять, как я могу сделать это с numpy, где функция с возвратом после превышения значения .
Любая помощь в направлении будет высоко ценится.