用 Python 实现连续数据分组求和并回写
💡 本文将教你如何用 Python + pandas 实现一个高效的小工具:
自动根据 Excel 数据中的“空行”进行 连续数据分组求和,并将结果写回到新的 Excel 文件中。
适用于能源数据、财务表格、分段实验数据等需要按空行划分分组的场景。
📊 一、问题背景
在日常数据处理中,我们常会遇到这种 Excel 表格:
| 数据 |
|---|
| 2 |
| 21 |
| (空) |
| 0 |
| (空) |
| 6 |
| (空) |
| 2 |
| 28 |
| 19 |
| (空) |
| 11 |
| 4 |
| (空) |
| 15 |
| 25 |
| (空) |
| 23 |
我们希望根据空行将数据进行分组,然后计算每组的数字之和。
例如:
| 分组 | 数字 | 求和结果 |
|---|---|---|
| 第1组 | 2, 21 | 23 |
| 第2组 | 0 | 0 |
| 第3组 | 6 | 6 |
| 第4组 | 2, 28, 19 | 49 |
| 第5组 | 11, 4 | 15 |
| 第6组 | 15, 25 | 40 |
| 第7组 | 23 | 23 |
目标:让 Python 自动完成这些计算,并把结果写回新的 Excel 文件中。
🧩 二、思路分析
核心思路如下:
- 使用
pandas读取 Excel 文件; - 遍历数据列,用空值(
NaN)作为分组边界; - 每组内求和;
- 在分组结束行插入结果;
- 输出到新 Excel 文件。
⚙️ 三、完整代码实现
import pandas as pd# === 1. 读取 Excel 文件 ===
# 请把 "data.xlsx" 改成你的文件名(路径也可以)
df = pd.read_excel("data.xlsx")# 假设数据列名为 “数据”,若你的列名不同,请改成对应名字
data = df["数据"].tolist()# === 2. 连续数字分组求和 ===
groups = []
group_sum = 0for x in data:if pd.isna(x): # 遇到空单元格 → 分组结束groups.append(group_sum)group_sum = 0else:group_sum += x# 最后一组
if group_sum != 0 or (len(data) and pd.isna(data[-1])):groups.append(group_sum)# === 3. 将结果保存为新列 ===
# 为保持对应关系,插入空行方便对齐
result_list = []
i = 0
group_sum = 0for x in data:if pd.isna(x):result_list.append(groups[i])i += 1else:result_list.append(None)# 若最后没有空行,也在末尾加上最后一个结果
if len(result_list) < len(data):result_list.append(groups[-1])df["结果"] = result_list[:len(df)]# === 4. 写入新 Excel 文件 ===
output_file = "data_with_result.xlsx"
df.to_excel(output_file, index=False)print("✅ 已生成新文件:", output_file)
📁 四、运行效果
执行完代码后,会在当前目录生成一个名为:
data_with_result.xlsx
的新文件。
打开后即可看到结果列自动填充:

| 数据 | 结果 |
|---|---|
| 2 | |
| 21 | 23 |
| (空) | 0 |
| 6 | 6 |
| (空) | 49 |
| 11 | |
| 4 | 15 |
| (空) | 40 |
| 23 | 23 |
清晰直观,每个分组的合计自动出现在对应的分隔行位置。
🚀 五、小结
本文介绍了一种实用的 Excel 自动化技巧:
使用 pandas 处理空行分隔的数据并按组求和。
👉 核心逻辑就是一句话:
“以空行作为分组边界,按组计算求和。”
这种方法在能源数据汇总、实验数据统计、项目分段结算等场景中非常高效。
✍️ 作者:IT小本本
📅 更新时间:2025-10-31
如果你觉得有用,欢迎点赞收藏!
更多实用数据处理技巧,将持续更新 ❤️
