<p>有一种方法:</p>
<pre><code># check valid cohort_period
valid_cohort = df.cohort_period.ne(0)
# cumulative sum revenue where cohort_period is not equal to zero and mask otherwise as nan
df['cum_revenue'] = valid_cohort.mul(df.revenue).groupby(df.account_id).cumsum().where(valid_cohort)
print(df)
# account_id cohort_period company revenue cum_revenue
#0 111 0 initech 3.67 NaN
#1 111 1 initech 9.95 9.95
#2 111 2 initech 9.95 19.90
#3 222 0 jackson steinem & co 193.29 NaN
#4 222 1 jackson steinem & co 299.95 299.95
#5 333 0 ingen 83.03 NaN
#6 333 1 ingen 499.95 499.95
#7 333 2 ingen 99.95 599.90
#8 666 0 enron 1.52 NaN
#9 666 1 enron 19.95 19.95
</code></pre>