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

如何使用Pandas扩展含字母的CSV数值区间为单行单值格式

区间展开Pandas实现方案

实现逻辑

  • 用正则提取区间首尾的前缀(开头非数字字符)、中间数值段、后缀(结尾非数字字符)
  • 生成数值范围内的所有整数,拼接原有前后缀得到单条值
  • 用Pandas的explode方法将列表值展开为多行

完整代码

import pandas as pd
import re

def expand_range(range_str):
    # 拆分区间起始和结束值
    start_str, end_str = range_str.split('-')
    # 正则匹配前缀、数字部分、后缀
    start_match = re.match(r'^(\D*)(\d+)(\D*)$', start_str)
    end_match = re.match(r'^(\D*)(\d+)(\D*)$', end_str)
    
    if not start_match or not end_match:
        raise ValueError(f"不支持的区间格式: {range_str}")
    
    prefix = start_match.group(1)
    suffix = start_match.group(3)
    # 校验同一区间前后缀一致,避免处理错误
    if prefix != end_match.group(1) or suffix != end_match.group(3):
        raise ValueError(f"区间前后格式不一致: {range_str}")
    
    start_num = int(start_match.group(2))
    end_num = int(end_match.group(2))
    
    # 生成区间内所有值
    return [f"{prefix}{num}{suffix}" for num in range(start_num, end_num + 1)]

# 读取CSV文件,替换为你的实际文件路径
df = pd.read_csv('input.csv')
# 生成展开后的值列
df['Value'] = df['Range'].apply(expand_range)
# 将列表类型的值展开为独立行
df_expanded = df.explode('Value', ignore_index=True)
# 调整输出列顺序
df_result = df_expanded[['Value', 'Category']]

# 打印测试,需要导出CSV就取消注释下行,替换为你的输出路径
print(df_result)
# df_result.to_csv('output.csv', index=False)

适配说明

代码完全覆盖要求的场景:长度为1的区间、带前后缀的字母数值混合格式,运行你给出的示例数据可直接得到期望输出结果。

内容的提问来源于stack exchange,提问作者E. Camus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:15:05