用 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 文件中。


🧩 二、思路分析

核心思路如下:

  1. 使用 pandas 读取 Excel 文件;
  2. 遍历数据列,用空值(NaN)作为分组边界;
  3. 每组内求和;
  4. 在分组结束行插入结果;
  5. 输出到新 Excel 文件。

⚙️ 三、完整代码实现

python 复制代码
import pandas as pd

# === 1. 读取 Excel 文件 ===
# 请把 "data.xlsx" 改成你的文件名(路径也可以)
df = pd.read_excel("data.xlsx")

# 假设数据列名为 "数据",若你的列名不同,请改成对应名字
data = df["数据"].tolist()

# === 2. 连续数字分组求和 ===
groups = []
group_sum = 0

for x in data:
    if pd.isna(x):  # 遇到空单元格 → 分组结束
        groups.append(group_sum)
        group_sum = 0
    else:
        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 = 0

for x in data:
    if pd.isna(x):
        result_list.append(groups[i])
        i += 1
    else:
        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

如果你觉得有用,欢迎点赞收藏!

更多实用数据处理技巧,将持续更新 ❤️

相关推荐
_OP_CHEN2 小时前
用极狐 CodeRider-Kilo 开发俄罗斯方块:AI 辅助编程的沉浸式体验
人工智能·vscode·python·ai编程·ai编程插件·coderider-kilo
布茹 ei ai2 小时前
QtWeatherApp - 简单天气预报软件(C++ Qt6)(附源码)
开发语言·c++·qt·开源·开源项目·天气预报
Wpa.wk2 小时前
自动化测试 - 文件上传 和 弹窗处理
开发语言·javascript·自动化测试·经验分享·爬虫·python·selenium
LinHenrY12272 小时前
初识C语言(编译和链接)
c语言·开发语言·蓝桥杯
_OP_CHEN2 小时前
【Python基础】(二)从 0 到 1 入门 Python 语法基础:从表达式到运算符的全面指南
开发语言·python
l1t2 小时前
利用小米mimo为精确覆盖矩形问题C程序添加打乱函数求出更大的解
c语言·开发语言·javascript·人工智能·算法
我命由我123452 小时前
Python Flask 开发:在 Flask 中返回字符串时,浏览器将其作为 HTML 解析
服务器·开发语言·后端·python·flask·html·学习方法
csbysj20202 小时前
Scala 类和对象
开发语言
拾忆,想起2 小时前
设计模式:软件开发的可复用武功秘籍
开发语言·python·算法·微服务·设计模式·性能优化·服务发现
沐知全栈开发2 小时前
HTTP/HTTPS 简介
开发语言