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

如何计算字符串连续数字最大个数及DataFrame最长连续数据段?

问题解决方案

问题1:计算字符串中连续数字的最大个数

解决思路

遍历字符串,实时统计当前连续数字的长度,同时记录过程中的最大值;也可以用正则表达式匹配所有连续数字子串,再取最长子串的长度。

实现代码

方法1:遍历统计法

def max_consecutive_digits(s):
    max_len = 0
    current_len = 0
    for char in s:
        if char.isdigit():
            current_len += 1
            max_len = max(max_len, current_len)
        else:
            current_len = 0
    return max_len

# 测试示例
test_str = "x12y345z6789a"
print(max_consecutive_digits(test_str))  # 输出5

方法2:正则表达式法

import re

def max_consecutive_digits_regex(s):
    digit_groups = re.findall(r'\d+', s)
    return max(len(group) for group in digit_groups) if digit_groups else 0

# 测试示例
test_str = "x12y345z6789a"
print(max_consecutive_digits_regex(test_str))  # 输出5

问题2:获取DataFrame列中最长连续数值段

解决思路

先对列数据去重(重复值不影响连续数值段的判断),再通过计算相邻元素的差值生成分组标识,最后筛选出长度最长的分组对应的数值序列。

实现代码

import pandas as pd

# 构造目标DataFrame
df = pd.DataFrame({'col': [1,1,2,3,4,7,8,8,15,19,20,21]})

# 1. 去重并重置索引
unique_vals = df['col'].drop_duplicates().reset_index(drop=True)

# 2. 计算相邻差值,生成分组标识(差值不为1时切换分组)
diff_flag = unique_vals.diff() != 1
group_ids = diff_flag.cumsum()

# 3. 找到长度最长的分组
longest_group_id = group_ids.value_counts().idxmax()

# 4. 提取最长连续数值段
longest_sequence = unique_vals[group_ids == longest_group_id].tolist()

print(longest_sequence)  # 输出[1,2,3,4]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:05:22