<p>类似于匡宏的回答,但作为一个没有numpy的班轮:</p>
<pre><code>df['miles_since_last_maint'] = df.groupby('car_id')['odometer_start'].diff().where(df.need_maintanince==1,0).astype(int)
</code></pre>
<p>结果:</p>
<pre><code> car_id need_maintanince odometer_start miles_since_last_maint
0 1 0 0 0
1 2 0 5 0
2 2 0 9 0
3 3 0 1 0
4 3 1 3 2
5 3 0 8 0
6 3 1 19 11
7 3 1 52 33
8 1 0 11 0
9 2 0 22 0
10 2 1 64 42
11 4 0 132 0
12 4 1 144 12
</code></pre>