如何基于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
相关产品推荐
相关产品推荐

