如何用Pandas将DataFrame向前填充(ffill)四次?
高效重复DataFrame指定行的实现方案
直接给你最快最简的方案——用pandas的index.repeat()配合loc操作,一步到位,比ffill高效得多,尤其适合需要重复执行的脚本场景。
步骤示例:
- 先构造你的初始DataFrame:
import pandas as pd # 初始DataFrame df = pd.DataFrame({'A': [1, 2, 3], 'B': [1, 2, 3], 'C': [1, 2, 3]})
- 定义每一行需要重复的次数(对应你的需求:第一行4次、第二行4次、第三行5次),然后生成目标DataFrame:
# 指定每行重复次数 repeat_counts = [4, 4, 5] # 核心操作:重复索引后提取对应行 result_df = df.loc[df.index.repeat(repeat_counts)]
- 重置索引(可选,如果你需要连续的整数索引):
result_df = result_df.reset_index(drop=True)
为什么这个方案更好?
- 速度最快:这是pandas原生的向量化操作,直接基于索引重复行,没有中间的空值填充步骤,性能远优于
ffill的方式,尤其当DataFrame规模较大时差距更明显。 - 代码简洁:一行核心代码完成需求,可读性高,维护成本低,适合重复执行的脚本。
验证结果
运行上述代码后,result_df的输出就是你想要的:
A B C 0 1 1 1 1 1 1 1 2 1 1 1 3 1 1 1 4 2 2 2 5 2 2 2 6 2 2 2 7 2 2 2 8 3 3 3 9 3 3 3 10 3 3 3 11 3 3 3 12 3 3 3
内容的提问来源于stack exchange,提问作者Carson P
相关产品推荐
相关产品推荐

