擅长:python、mysql、java
<p>使用<code>shift</code>、<code>cumsum</code>和<code>ffill</code>尝试groupby</p>
<pre><code>m = ~df.groupby('F_Date').is_B.diff().eq(1)
s = (-df.col).groupby(df.F_Date).apply(lambda x: x.shift(fill_value=25000).cumsum())
df['c_a'] = s.where(m).groupby(df.F_Date).ffill()
Out[98]:
F_Date B_Date col is_B c_a
0 01/09/2019 02/08/2019 2200 1 25000.0
1 01/09/2019 03/08/2019 672 1 22800.0
2 02/09/2019 03/08/2019 1828 1 25000.0
3 01/09/2019 04/08/2019 503 0 22128.0
4 02/09/2019 04/08/2019 829 1 23172.0
5 03/09/2019 04/08/2019 1367 0 25000.0
6 02/09/2019 05/08/2019 559 1 22343.0
7 03/09/2019 05/08/2019 922 1 25000.0
8 04/09/2019 05/08/2019 1519 0 25000.0
9 01/09/2019 06/08/2019 376 1 22128.0
</code></pre>