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

Pandas DataFrame每隔3行插入2个空行的实现方法

Pandas 每N行数据后插入M行空行实现方案

原始数据集

初始DataFrame构造代码:

import pandas as pd
df = pd.DataFrame(
    columns=['a','b'],
    data=[[3,4],[5,5],[9,3],[1,2],[9,9],[6,5],[6,5],[6,5],[6,5],
          [6,5],[6,5],[6,5],[6,5],[6,5],[6,5],[6,5],[6,5]]
)

实现逻辑

不用逐行循环插入,通过索引映射的方式批量处理,性能更高:

  • 先给每一行原始数据计算它在最终结果里的索引位置,每累计3行有效数据,后续索引整体向后偏移2位(给2行空行留位置)
  • 用新索引重构DataFrame后,对完整连续的索引范围做重索引,空缺位置会自动填充为NaN
  • 最后重置索引为默认从0开始的连续整数即可

可直接运行的代码

import numpy as np

# 规则配置:每3行有效数据,插入2行NaN空行
step_valid = 3
gap_null = 2

# 计算每行原始数据对应的新索引
row_count = len(df)
new_index = np.arange(row_count) + (np.arange(row_count) // step_valid) * gap_null

# 重索引生成结果,空缺位置自动填充NaN
result = df.set_index(pd.Index(new_index)).reindex(np.arange(new_index.max() + 1))
# 重置为默认整数索引
result = result.reset_index(drop=True)

输出结果

运行代码后得到的result和预期完全一致:

a    b
0   3.0  4.0
1   5.0  5.0
2   9.0  3.0
3   NaN  NaN
4   NaN  NaN
5   1.0  2.0
6   9.0  9.0
7   6.0  5.0
8   NaN  NaN
9   NaN  NaN
10  6.0  5.0
11  6.0  5.0
12  6.0  5.0
13  NaN  NaN
14  NaN  NaN
15  6.0  5.0
16  6.0  5.0
17  6.0  5.0
18  NaN  NaN
19  NaN  NaN
20  6.0  5.0
21  6.0  5.0
22  6.0  5.0
23  NaN  NaN
24  NaN  NaN
25  6.0  5.0
26  6.0  5.0

如果需要调整插入规则,直接修改step_valid和gap_null两个参数即可适配其他场景。

内容的提问来源于stack exchange,提问作者Martin Yordanov Georgiev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:51:34