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

如何在Pandas DataFrame中拆分字符串格式的数值范围与单个值

Pandas DataFrame数值范围拆分实现

原始数据

Type    range
Mike    10..13|7|8|
Ni      3..4
NANA    2|1|6

期望输出

Type    range
Mike    10
Mike    11
Mike    12
Mike    13
Mike    7
Mike    8
Nico    3
Nico    4
NANA    2
NANA    1
NANA    6

注:原始输入中Type为Ni,期望输出显示为Nico,若需批量修改Type值可单独添加代码处理,以下实现保留原始Type字段值。

解决方案代码

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'Type': ['Mike', 'Ni', 'NANA'],
    'range': ['10..13|7|8|', '3..4', '2|1|6']
})

def expand_range(s):
    # 清理末尾多余的竖线,拆分每个数值片段
    s_clean = s.rstrip('|')
    segments = s_clean.split('|')
    num_list = []
    for seg in segments:
        if '..' in seg:
            # 解析连续范围,生成整数序列
            start, end = map(int, seg.split('..'))
            num_list.extend(range(start, end + 1))
        else:
            # 单个数值直接转换
            num_list.append(int(seg))
    return num_list

# 应用函数生成数值列表,再拆分为多行
df['range'] = df['range'].apply(expand_range)
result_df = df.explode('range', ignore_index=True)

print(result_df)

代码说明

  1. 自定义处理函数:expand_range负责解析每个range字符串,清理无效字符后,区分连续范围和单个数值,将其转换为完整的数值列表。
  2. 列转换:用apply将每个range字段转换为对应的数值列表。
  3. 拆分多行:使用explode方法将列表中的每个数值拆分为单独一行,同时重置索引保证结果整洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:45:44