我有以下数据框示例(填充行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()