У меня есть фрейм данных, который представляет вероятности временного ряда.Каждое значение в столбце «Одиночный» представляет вероятность этого события в этот период времени (где каждая строка представляет один период времени).Каждое значение в столбце «Накопительное» представляет вероятность того, что это событие произойдет каждый период времени до этой точки (т. Е. Оно является произведением каждого значения в «Одиночном» времени от 0 до настоящего времени).
Упрощенная версияфрейм данных выглядит следующим образом:
Single Cumulative
0 0.990000 1.000000
1 0.980000 0.990000
2 0.970000 0.970200
3 0.960000 0.941094
4 0.950000 0.903450
5 0.940000 0.858278
6 0.930000 0.806781
7 0.920000 0.750306
8 0.910000 0.690282
9 0.900000 0.628157
10 0.890000 0.565341
Чтобы рассчитать накопительный столбец на основе столбца «Один», я циклически перебираю фрейм данных следующим образом:
for index, row in df.iterrows():
df['Cumulative'][index] = df['Single'][:index].prod()
Вна самом деле данных много, а циклы - это снижение производительности, возможно ли вообще достичь этого без циклов?
Я пытался найти способ векторизации этого вычисления или даже использовать функцию pandas.DataFrame.apply, но я не верю, что могу ссылаться на текущее значение индекса в любом из этих методов.