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

如何在Pandas DataFrame中合并两列单元格并添加合计行

在Pandas DataFrame底部添加跨行的总分行

要注意的是,Pandas原生的DataFrame对象本身不支持单元格合并,想要实现“总分”跨“学生ID”和“课程ID”两列的效果,得借助Styler类做样式渲染,同时添加汇总行。下面分两种常用场景给出实现方法:

场景1:在Jupyter或网页中渲染表格

完整代码

import pandas as pd

# 构造原始数据
df = pd.DataFrame({
    '学生ID': [103, 103, 103],
    '课程ID': [201, 203, 204],
    '分数': [67, 67, 89]
})

# 计算总分,创建汇总行
total_row = pd.DataFrame({
    '学生ID': ['总分'],
    '课程ID': [''],  # 留空,后续用样式隐藏
    '分数': [df['分数'].sum()]
})

# 把汇总行追加到原表格后面
df_with_total = pd.concat([df, total_row], ignore_index=True)

# 定义样式函数,实现跨行效果
def set_total_row_style(styler):
    # 让最后一行的第一列跨2列显示
    styler.set_table_styles([
        {
            'selector': 'tr:last-child td:first-child',
            'props': [('colspan', '2')]
        },
        {
            'selector': 'tr:last-child td:nth-child(2)',
            'props': [('display', 'none')]
        }
    ])
    return styler

# 渲染出带样式的表格
df_with_total.style.pipe(set_total_row_style)

原理说明

先给表格追加一行总分数据,其中“课程ID”列留空,再通过CSS样式让最后一行的第一列(学生ID列)跨2列,并隐藏第二列(课程ID列),视觉上就实现了“总分”跨两列的效果。

场景2:导出到Excel文件

如果要把结果导出到Excel并保留跨行效果,需要用xlsxwriter引擎处理单元格合并:

import pandas as pd

# 构造原始数据和汇总行(和上面步骤一致)
df = pd.DataFrame({
    '学生ID': [103, 103, 103],
    '课程ID': [201, 203, 204],
    '分数': [67, 67, 89]
})
total_row = pd.DataFrame({
    '学生ID': ['总分'],
    '课程ID': [''],
    '分数': [df['分数'].sum()]
})
df_with_total = pd.concat([df, total_row], ignore_index=True)

# 导出到Excel并设置合并单元格
with pd.ExcelWriter('学生成绩表.xlsx', engine='xlsxwriter') as writer:
    df_with_total.to_excel(writer, index=False, sheet_name='成绩')
    workbook = writer.book
    worksheet = writer.sheets['成绩']
    
    # 获取最后一行的Excel行号(Excel行号从1开始,所以要加2)
    last_excel_row = len(df_with_total) + 1
    # 合并A列和B列的最后一行
    worksheet.merge_range(f'A{last_excel_row}:B{last_excel_row}', '总分')

这样导出的Excel文件里,最后一行的“总分”就会跨A、B两列显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:55:20