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

Python如何获取两数间所有整数 展开DataFrame区间格式列

Pandas展开单元格内整数区间为整数列表

实现思路

  • 编写通用值处理函数,兼容单元格内三类值格式:单个整数、单区间、逗号分隔的多区间
  • 将处理函数批量应用到DataFrame所有单元格,完成格式转换

完整代码

import pandas as pd

# 构造测试DataFrame
df = pd.DataFrame({
    'code1': [34261, '[32413-32417]'],
    'code2': ['[54642-54646]', '[23541-23546, 42156-42158]']
})

# 定义区间展开核心函数
def expand_range(cell_val):
    # 单元格本身为整数时直接返回
    if isinstance(cell_val, int):
        return cell_val
    res_list = []
    # 移除首尾方括号,按逗号拆分多个区间段
    range_segments = cell_val.strip('[]').split(',')
    for seg in range_segments:
        seg = seg.strip()
        start, end = map(int, seg.split('-'))
        # 生成包含首尾值的连续整数,追加到结果列表
        res_list.extend(range(start, end + 1))
    return res_list

# 批量处理所有单元格
# pandas 2.1.0以下版本使用applymap
df = df.applymap(expand_range)
# pandas 2.1.0及以上版本替换为下方写法即可
# df = df.map(expand_range)

运行结果

处理后得到的DataFrame完全匹配需求结构:

code1                                                         code2
0                             34261                                    [54642, 54643, 54644, 54645, 54646]
1  [32413, 32414, 32415, 32416, 32417]  [23541, 23542, 23543, 23544, 23545, 23546, 42156, 42157, 42158]

注:需求示例中第一个code2区间开头重复写了两次54642属于笔误,实际连续区间会从54642逐次递增到54646。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:30:47