You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas:基于非零值分组统计同地点配送次数

配送地点分组统计次数解决方案

原数据构造

先还原你的输入数据:

import pandas as pd

df = pd.DataFrame(
    {'Distance': [10, 0, 0, 3, 2, 0]},
    index=[1, 2, 3, 4, 5, 6]
)

实现代码

通过生成分组标识、统计分组大小的方式,直接得到目标列:

# 生成分组ID:每遇到非0的Distance就开启新分组
df['group_id'] = (df['Distance'] != 0).cumsum()

# 统计每个分组的配送次数
counts = df.groupby('group_id').size()

# 将次数映射回原表,生成目标列
df['Nb_Deliveries'] = df['group_id'].map(counts)

# 移除临时分组列(可选操作)
df = df.drop('group_id', axis=1)

输出结果

执行后得到的DataFrame如下:

Distance  Nb_Deliveries
1        10              3
2         0              3
3         0              3
4         3              1
5         2              2
6         0              2

逻辑说明

  • (df['Distance'] != 0).cumsum():非0值会生成1,累加后形成连续的分组ID,所有后续的0会和最近的非0值归为同一组。
  • groupby('group_id').size():计算每个分组的行数,也就是该地点的总配送次数。
  • 最后通过map将次数赋值给组内每一行,完成需求。

内容的提问来源于stack exchange,提问作者Movilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 12:06:28