回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个数据框,我想根据两个条件计算累计总和:</p>
<ul>
<li>表中已存在的第一个布尔值</li>
<li>还有一个固定的阈值,用于检查累计总和</李>
</ul>
<p>我已经成功地获得了第一名或第二名,但我发现很难将两者结合起来</p>
<p>我第一次使用groupby</p>
<pre><code>df['group'] = np.cumsum((df['IsSuccess'] != df['IsSuccess'].shift(1)))
df['SumSale'] = df[['Sale', 'group']].groupby('group').cumsum()
</code></pre>
<p>第二次从Pyfunc开始</p>
<pre><code>sumlm = np.frompyfunc(lambda a,b: b if (a+b>5) else a+b, 2, 1)
df['SumSale'] = sumlm.accumulate(df['Sale'], dtype=object)
</code></pre>
<p>我的df是,SumSale是我想要的结果</p>
<pre><code>df2 = pd.DataFrame({'Sale': [10, 2, 2, 1, 3, 2, 1, 3, 5, 5],
'IsSuccess': [False, True, False, False, True, False, True, False, False, False],
'SumSaleExpected': [10, 12, 2, 3, 6, 2, 3, 6, 11, 16]})
</code></pre>
<p>所以总结一下,我想在总和超过5并且行IsSuccess为真时开始累积总和。如果可能的话,我想避免for循环</p>
<p>谢谢你的帮助</p>