一、问题背景与解决方案概述
每个月底整理各部门提交的Excel表格,手动加总数据、处理空值、合并重复姓名……这些重复劳动既耗时又容易出错。
其实用Python写个简单脚本,几分钟就能搞定。
二、场景示例
比如收到这样的表格data260202.xlsx:
需要按姓名汇总各月数据,还要处理空值和可能的重复姓名。
三、全部代码实现
import pandas as pd# 读取数据df = pd.read_excel('data260202.xlsx')# 清洗姓名列df['名称'] = df['名称'].astype(str).str.strip()df = df[df['名称'] != '']# 自动识别月份列(除“名称”外的所有列)month_cols = [col for col in df.columns if col != '名称']# 空值转0,非数字转0for col in month_cols: df[col] = pd.to_numeric(df[col], errors='coerce').fillna(0)# 按姓名汇总result = df.groupby('名称', as_index=False)[month_cols].sum()# 添加总计并排序result['总计'] = result[month_cols].sum(axis=1)result = result.sort_values('名称').reset_index(drop=True)# 输出结果print(result.to_string(index=False))result.to_excel('月度汇总报表.xlsx', index=False)
四、方法优势
- 自动适配月份:新增“4月”“5月”列无需修改代码,只要列名不是“名称”都会被纳入计算
- 空值友好:空白单元格、文字内容自动转为0,避免报错
- 结果可复用:同时输出到控制台和Excel,方便核对与存档
运行后生成的报表:
五、复杂场景扩展
列名含“月”字但格式杂乱改用:month_cols = [col for col in df.columns if '月' in str(col)]
跨年数据(如“2026年1月”)用正则匹配:
import remonth_cols = [col for col in df.columns if re.search(r'\d+月$|\d+年\d+月', str(col))]
需要按部门+姓名两级汇总假设表格有“部门”列:result = df.groupby(['部门', '名称'])[month_cols].sum().reset_index()
六、快速上手指南
- 安装依赖:
pip install pandas openpyxl
适合财务、运营、项目管理等需要定期汇总数据的岗位。某电商团队用类似脚本将月度报表处理时间从2小时缩短到10秒,且再未出现手工计算错误。
代码虽短,解决的是实实在在的重复劳动。把机械工作交给程序,人去做更有价值的事。
为了能随时获取最新动态,大家可以动动小手将公众号添加到“星标⭐”哦,点赞 + 关注,用时不迷路!!!!
关注公众号:IT小本本 👇