Рассчитать значение в Pandas, которое основано на произведении прошлых значений без зацикливания - PullRequest
0 голосов
/ 16 мая 2018

У меня есть фрейм данных, который представляет вероятности временного ряда.Каждое значение в столбце «Одиночный» представляет вероятность этого события в этот период времени (где каждая строка представляет один период времени).Каждое значение в столбце «Накопительное» представляет вероятность того, что это событие произойдет каждый период времени до этой точки (т. Е. Оно является произведением каждого значения в «Одиночном» времени от 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, но я не верю, что могу ссылаться на текущее значение индекса в любом из этих методов.

1 Ответ

0 голосов
/ 16 мая 2018

Для этого в Пандах есть встроенная функция:

df.cumprod()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...