You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python Pandas:按Placement ID分组插入合计行并求和写入Excel

嘿,作为Python新手碰到这个需求完全没问题,我来一步步带你实现这个功能~

实现思路

核心思路是按"Placement ID"分组,给每个分组末尾插入一行标注"Total"的合计行并对数值列求和,最后把处理后的结果写入Excel,还可以给合计行加个加粗格式让它更显眼。

具体代码步骤

1. 导入必要的库

我们需要用pandas处理数据,openpyxl来设置Excel的美化格式:

import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Font

2. 读取你的数据

把你的本地数据文件路径替换进去即可:

# 读取Excel数据到DataFrame
df = pd.read_excel("你的数据文件路径.xlsx")

3. 给每个Placement ID组添加合计行

groupby+apply的组合,给每个分组自动插入Total行:

def add_total_row(group):
    # 计算当前分组所有数值列的求和结果
    total_row = pd.DataFrame(group.sum(numeric_only=True)).T
    # 给合计行的Placement ID列设置为"Total"
    total_row["Placement ID"] = "Total"
    # 保持合计行的列顺序和原数据完全一致
    total_row = total_row[df.columns]
    # 把原分组数据和合计行合并
    return pd.concat([group, total_row], ignore_index=True)

# 对每个Placement ID分组应用上面的函数
result_df = df.groupby("Placement ID", group_keys=False).apply(add_total_row)

4. 写入Excel并美化格式

先把处理好的数据写入Excel,再给Total行设置加粗格式,让结果更贴近目标样式:

# 先写入无格式的处理结果
result_df.to_excel("带合计的结果.xlsx", index=False)

# 加载工作簿设置合计行的加粗格式
wb = load_workbook("带合计的结果.xlsx")
ws = wb.active

# 遍历所有行,找到Placement ID为Total的行并加粗
for row in ws.iter_rows(min_row=2):  # 跳过表头行
    # 定位Placement ID列的位置,判断当前行是否为合计行
    if row[df.columns.get_loc("Placement ID")].value == "Total":
        for cell in row:
            cell.font = Font(bold=True)

# 保存带格式的最终文件
wb.save("带合计的结果.xlsx")

关键细节说明

  • numeric_only=True:确保只对数值列求和,避免对字符串列做无效计算
  • 保持列顺序一致:通过total_row[df.columns]保证合计行的列顺序和原数据完全匹配
  • 格式美化:用openpyxl给Total行加粗,让结果更清晰易读

这样处理后,你的Excel就会和目标样式完全一致啦~

内容的提问来源于stack exchange,提问作者DKM

火山引擎 最新活动