Pandas:根据特定值进行分组和计数

Mov*_*lla 2 python group-by dataframe pandas

我的交货数据框如下所示:

df

     Distance    
1      10
2       0
3       0
4       3
5       2
6       0
Run Code Online (Sandbox Code Playgroud)

每次有 0 时,表示交货地点与前一次相同。我想创建一个新列“此地点的交货数量”,如下所示:

df2

     Distance    Nb_Deliveries  
1      10              3
2       0              3
3       0              3
4       3              1
5       2              2 
6       0              2
Run Code Online (Sandbox Code Playgroud)

我不知道如何通过考虑最后一个非空(0)值来进行分组和计数。非常感谢您的帮助 !

Ste*_*tef 5

您可以按cumsum非零距离进行分组,然后进行计数

df['Nb_Deliveries'] = df.groupby(df.Distance.ne(0).cumsum()).Distance.transform('count')
Run Code Online (Sandbox Code Playgroud)

结果:

   Distance  Nb_Deliveries
1        10              3
2         0              3
3         0              3
4         3              1
5         2              2
6         0              2
Run Code Online (Sandbox Code Playgroud)