Pandas如何在DataFrame底部添加列合计行并随导出结果保留
Pandas DataFrame 导出前添加底部合计行方案
不要逐列手动调用.sum()计算,直接通过批量逻辑生成合计行拼接进DataFrame后再导出,一次写完逻辑可永久复用,无需导出后手动修改文件。
通用方案(CSV/Excel导出均适用,无额外依赖)
自动识别所有数值列计算合计值,非数值列自动填充「合计」标识,全程在DataFrame层面完成处理,导出即带合计行:import pandas as pd # 复制原始数据避免修改源DataFrame export_data = Wilhelm.copy() # 批量生成合计行规则 sum_row = {} for col in export_data.columns: # 数值列自动求和,非数值列填合计标签 if pd.api.types.is_numeric_dtype(export_data[col]): # 不需要求和的数值列(如序号、ID)可单独指定值,比如 sum_row[col] = "" sum_row[col] = export_data[col].sum() else: sum_row[col] = "合计" # 拼接合计行到数据末尾 export_data = pd.concat( [export_data, pd.DataFrame(sum_row, index=[0])], ignore_index=True ) # 直接导出,无需事后修改文件 export_data.to_csv("导出结果.csv", index=False, encoding="utf-8-sig") export_data.to_excel("导出结果.xlsx", index=False)Excel专属优化方案(合计为可自动更新的公式)
如果只需要导出Excel文件,可以在导出时直接写入Excel原生SUM公式,后续修改表格内上方数值时,合计值会自动更新,还可直接给合计行加样式:import pandas as pd from openpyxl import load_workbook from openpyxl.styles import Font # 先导出原始明细数据 Wilhelm.to_excel("带公式合计.xlsx", index=False, sheet_name="明细") # 加载文件追加合计行 wb = load_workbook("带公式合计.xlsx") ws = wb["明细"] sum_row_idx = ws.max_row + 1 # 第一列写入合计标识 ws.cell(row=sum_row_idx, column=1, value="合计").font = Font(bold=True) # 遍历需要合计的列写入SUM公式,例:从第2列开始为金额、数量等需合计的数值列 for col_idx in range(2, ws.max_column + 1): col_letter = chr(64 + col_idx) sum_cell = ws.cell( row=sum_row_idx, column=col_idx, value=f"=SUM({col_letter}2:{col_letter}{sum_row_idx-1})" ) sum_cell.font = Font(bold=True) wb.save("带公式合计.xlsx")
两种方案都不需要逐列手动写求和逻辑,代码写完一次后续所有导出场景都能直接复用,比逐列计算再手动补到导出文件里效率高很多。
内容的提问来源于stack exchange,提问作者max2lax
相关产品推荐
相关产品推荐

