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

如何在Pandas中根据连续行值分组(遇0新建分组)

解决按0值分组的Pandas方法

这问题处理起来很直观,用Pandas的累积求和功能就能轻松实现你要的分组效果,我给你一步步拆解操作:

1. 先创建示例DataFrame

首先我们先把你提供的数据转换成Pandas DataFrame:

import pandas as pd

data = {'distance_along_path': [0, 2.2, 4.5, 7.0, 0, 3.0, 5.0, 0, 2.0, 5.0, 7.0]}
df = pd.DataFrame(data)

2. 生成分组的数字标识

核心思路是:每当distance_along_path等于0时,就标记为一个新分组的起点。我们可以先创建一个布尔列,再对它做累积求和,这样就能得到连续的分组编号:

# 标记所有0值的位置,再累积求和得到分组编号
df['group_num'] = (df['distance_along_path'] == 0).cumsum()

这时候group_num列会是[1,1,1,1,2,2,2,3,3,3,3],完美对应了我们需要的分组逻辑。

3. 将数字编号转为字母标识

如果想要把数字换成A、B、C这样的字母,只需要利用ASCII码的映射关系,把编号转换成对应的字母即可:

# 把数字编号转为大写字母(A对应65,所以编号+64就是对应的ASCII码)
df['group'] = df['group_num'].apply(lambda x: chr(64 + x))

4. 清理并查看结果

最后可以删掉中间的group_num列,只保留需要的两列:

df = df.drop('group_num', axis=1)
print(df)

运行后得到的结果完全符合你的需求:

distance_along_path group
0                   0.0     A
1                   2.2     A
2                   4.5     A
3                   7.0     A
4                   0.0     B
5                   3.0     B
6                   5.0     B
7                   0.0     C
8                   2.0     C
9                   5.0     C
10                  7.0     C

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:42:35