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

如何用Python或Pandas统计跳过首个区块的指定字符块长度

Pandas字符块长度统计实现方案

问题描述

现有如下示例DataFrame:

索引col1 内容
index0'......kkkkkkk......kkkkkkkkk.....kkkkkkkkkkkk'
index1'......kkkkkkkkk.........kkkkkkk.......kkkkkkkk...'

需要完成以下统计需求:

  • 跳过每行的首个字符区块
  • 统计每行中第一个'k'连续字符块的长度(如index0为7、index1为9)
  • 统计每行中第二个'.'连续字符块的长度(如index0为6、index1为9)

最终预期结果:

索引1st block of 'k'2nd block of '.'
index076
index199

实现代码

我们可以利用正则表达式匹配连续字符块,结合Pandas的apply方法完成统计:

import pandas as pd
import re

# 构造示例DataFrame
df = pd.DataFrame(
    {'col1': [
        '......kkkkkkk......kkkkkkkkk.....kkkkkkkkkkkk',
        '......kkkkkkkkk.........kkkkkkk.......kkkkkkkk...'
    ]},
    index=['index0', 'index1']
)

# 定义单行文本处理函数
def calculate_block_lengths(text):
    # 匹配所有连续相同字符的区块,返回(完整区块, 单个字符)的列表
    all_blocks = re.findall(r'((.)\2*)', text)
    # 跳过首个区块,取后续待处理区块
    target_blocks = all_blocks[1:]

    # 提取第一个'k'区块的长度
    first_k_length = 0
    for block, char in target_blocks:
        if char == 'k':
            first_k_length = len(block)
            break

    # 提取第二个'.'区块的长度
    dot_counter = 0
    second_dot_length = 0
    for block, char in target_blocks:
        if char == '.':
            dot_counter += 1
            if dot_counter == 2:
                second_dot_length = len(block)
                break

    return pd.Series(
        [first_k_length, second_dot_length],
        index=["1st block of 'k'", "2nd block of '.'"]
    )

# 应用函数到每行数据,生成结果DataFrame
result_df = df['col1'].apply(calculate_block_lengths)
print(result_df)

代码说明

  1. 正则匹配逻辑:re.findall(r'((.)\2*)', text)会将字符串分割为连续相同字符的区块,例如'......kkkkkkk'会被拆分为[('......', '.'), ('kkkkkkk', 'k')]
  2. 跳过首个区块:通过target_blocks = all_blocks[1:]直接舍弃第一组字符块,满足需求要求
  3. 区块筛选:遍历剩余区块,分别定位到第一个'k'块和第二个'.'块,提取它们的长度
  4. 结果整合:用apply将处理函数映射到每行,最终生成符合要求的结果DataFrame

运行代码后输出结果与预期完全一致:

1st block of 'k'  2nd block of '.'
index0                 7                 6
index1                 9                 9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:02:40