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)值来进行分组和计数。非常感谢您的帮助 !
您可以按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)