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

Python DataFrame中按序列连续递增条件拼接字符串的方法

解决方案

可以通过Pandas的分组聚合功能实现需求,核心是先识别出连续递增1的序列组,再对每组内容进行拼接:

步骤说明

  • 计算Sequence text列与前一行的差值,当差值不等于1时,标记为新组的起始
  • 基于标记生成分组ID,将连续序列的行归为同一组
  • 对每组的Names进行字符串拼接,Sequence text转为字符串后用逗号连接

完整代码

import pandas as pd

# 构造原始数据
df = pd.DataFrame({
    'Names': ['x', 'y', 'a', 'b', 'c'],
    'Sequence text': [1, 2, 4, 5, 6]
})

# 生成分组键:当前行与前一行Sequence text差值≠1时,组号+1
df['group'] = (df['Sequence text'] - df['Sequence text'].shift(1) != 1).cumsum()

# 分组聚合处理
result = df.groupby('group').agg(
    Names=('Names', ''.join),
    Sequence text=('Sequence text', lambda x: ','.join(map(str, x)))
).reset_index(drop=True)

print(result)

代码解释

  • df['Sequence text'].shift(1):将Sequence text列向下偏移一行,用于计算当前行与前一行的数值差
  • (df['Sequence text'] - df['Sequence text'].shift(1) != 1).cumsum():差值不等于1时返回True,累计求和后生成唯一分组ID,同一连续序列的行将被分到同一组
  • groupby('group').agg(...):按分组ID聚合数据,''.join直接拼接Names列内容,lambda x: ','.join(map(str, x))把数字转为字符串后用逗号连接
  • reset_index(drop=True):移除分组ID列,得到符合要求的结果

运行后输出结果与期望一致:

NamesSequence text
xy1,2
abc4,5,6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:02:56