Pandas如何根据Series的对应取值重复索引元素生成新序列
解决方案
你可以直接使用pandas内置的repeat向量化方法实现需求,全程不需要循环,代码非常简洁:
result = pd.Series(test.index.repeat(test.values))
方法说明
test.index.repeat(test.values):直接让索引序列的每个元素,按照对应位置的value值重复指定次数,返回一个重复后的索引对象- 外层套
pd.Series()会自动生成从0开始的连续整数索引,完全匹配你需要的输出格式
性能优势
这个实现是pandas底层优化的向量化操作,相比你原先的循环+append写法:
- 运行效率提升几十到上百倍(数据量越大优势越明显)
- 避免了旧版本pandas中
append方法反复创建新对象的额外开销,也兼容最新版pandas(append方法在pandas 1.4+版本已被正式弃用)
内容的提问来源于stack exchange,提问作者Emersen Tamura - Paki
相关产品推荐
相关产品推荐

