计算Pandas中的值,该值基于过去值的乘积而不进行循环

时间:2018-05-16 20:07:50

标签: python pandas numpy

我有一个表示时间序列概率的数据框。列中的每个值'单个'表示该时间段内该事件的概率(每行代表一个时间段)。列中的每个值'累积'表示该事件发生在该时间段之前的每个时间段的概率(即,从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

为了计算“累积”'基于' Single'的列我正在循环遍历数据框:

for index, row in df.iterrows():
    df['Cumulative'][index] = df['Single'][:index].prod()

实际上,有很多数据和循环是对性能的拖累,是否有可能在没有循环的情况下实现这一点?

我试图找到一种方法来对此计算进行矢量化甚至使用pandas.DataFrame.apply函数,但我不相信我能够引用当前的索引值那些方法。

1 个答案:

答案 0 :(得分:3)

在Pandas中有一个内置功能:

df.cumprod()