Python Pandas Dataframe永久性cumprod

时间:2018-09-14 14:00:46

标签: python pandas dataframe

我有以下数据框示例(填充行100k +):

在:

    official        delta
    0               0.000201567           
    0               0.000194400            
    0               0.000151906            
    62.94957331     0.000144387            
    64.06471633     0.000125152            
    64.51335098     0.000133459            
    64.4101024      0.000120795            
    0               0.000146456

但收到以下输出:

official        delta               result
0               0.000201567         0
0               0.0001944           0 
0               0.000151906         0
62.94957331     0.000144387         0
64.06471633     0.000125152         0
64.51335098     0.000133459         0
64.4101024      0.000120795         0
0               0.000146456         0

所需解决方案:

official     delta          result
0            0.000201567    0
0            0.0001944      0
0            0.000151906    0
62.94957331  0.000144387    62.94957331
64.06471633  0.000125152    64.06471633
64.51335098  0.000133459    64.51335098
64.4101024   0.000120795    64.4101024
0            0.000146456    63.76600137

尽管似乎无法正常运行,但我尝试了以下代码。我不明白为什么会给出错误的结果。当我在演示数据框中执行它时,一切都很好。

当mask为True时,代码应选择'official'元素,否则将其先前的元素乘以0.99。这里的问题是,当掩码为True时,代码不会选择“官方”元素。

mask = (df['official']<51) & (df['delta']>0)

df['result'] = df['official'].where(mask,0.99).groupby(~mask.cumsum()).cumprod()

0 个答案:

没有答案