我对Pandas并不陌生,所以如果我的问题的答案很明显,请原谅我。我有一个像这样的数据集

    Data Correction
0   100  Nan
1   104  Nan
2   108  Nan
3   112  Nan
4   116  Nan
5   120  0.5
6   124  Nan
7   128  Nan
8   132  Nan
9   136  0.4
10  140  Nan
11  144  Nan
12  148  Nan
13  152  0.3
14  156  Nan
15  160  Nan


我要计算的是向上累积的数据的校正因子。

我的意思是说,来自13及其以下元素应应用因子0.3,而9及其以下元素应应用0.3*0.450.3*0.4*0.5以下。

所以最终的校正列应该看起来像这样

    Data  Correction  Factor
0   100   Nan         0.06
1   104   Nan         0.06
2   108   Nan         0.06
3   112   Nan         0.06
4   116   Nan         0.06
5   120   0.5         0.06
6   124   Nan         0.12
7   128   Nan         0.12
8   132   Nan         0.12
9   136   0.4         0.12
10  140   Nan         0.3
11  144   Nan         0.3
12  148   Nan         0.3
13  152   0.3         0.3
14  156   Nan         1
15  160   Nan         1


我怎样才能做到这一点?

最佳答案

我认为您在反转cumprod()列后正在寻找Correction

df=df.assign(Factor=df.Correction[::-1].cumprod().ffill().fillna(1))




    Data  Correction  Factor
0    100         NaN    0.06
1    104         NaN    0.06
2    108         NaN    0.06
3    112         NaN    0.06
4    116         NaN    0.06
5    120         0.5    0.06
6    124         NaN    0.12
7    128         NaN    0.12
8    132         NaN    0.12
9    136         0.4    0.12
10   140         NaN    0.30
11   144         NaN    0.30
12   148         NaN    0.30
13   152         0.3    0.30
14   156         NaN    1.00
15   160         NaN    1.00

10-06 10:32