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

如何基于Pandas DataFrame两列数值范围扩展生成对应多行数据

Pandas区间扩展行实现方案

方法1:apply + explode(适合小数据量,代码简洁)

首先构造测试数据:

import pandas as pd

# 示例原始数据
df = pd.DataFrame({
    'item': ['A', 'B'],
    'index_start': [1, 4],
    'index_end': [3, 7]
})

核心逻辑:

# 逐行生成对应区间的整数列表
df['index'] = df.apply(lambda x: list(range(x['index_start'], x['index_end'] + 1)), axis=1)
# 展开列表为单独的行
result = df.explode('index', ignore_index=True)

该方法仅支持Pandas 1.3及以上版本,代码可读性高,适合小体量数据处理。

方法2:repeat + cumcount(适合大数据量,性能更优)

如果要处理十万行以上的大表,推荐用向量化操作替代逐行apply,性能提升明显:

# 计算每行需要重复的次数
repeat_cnt = df['index_end'] - df['index_start'] + 1
# 重复对应次数生成新的基础表
res_df = df.loc[df.index.repeat(repeat_cnt)].reset_index(drop=True)
# 按原行分组生成连续递增的index值
res_df['index'] = res_df.groupby(level=0).cumcount() + res_df['index_start']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:12:02