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

如何将DataFrame列总和写入Excel指定单元格?循环赋值异常求助

问题解决:为每个Excel工作表添加对应DataFrame列总和

错误根源

你代码里的total = {}被放在了for循环内部,每次循环都会重新创建一个空字典,之前循环存入的键值对会被完全清空,最终字典里只会保留最后一次循环的计算结果,这就是所有工作表都显示最后一个总和的原因。

修正步骤

把字典的初始化语句移到循环外面,让字典在整个循环过程中持续累积所有工作表的总和数据:

# 将字典初始化移到循环外部
total = {}
for p in my_list:
    ...
    df[p] = pd.DataFrame(my_list)  # 注意:原代码拼写错误,应为DataFrame而非Dataframe
    total[p] = df[p]['column'].sum()

# 后续写入Excel时
sheet['D32'] = total.get(sheet_name)

完整实现示例

如果使用pandas.ExcelWriter来生成多工作表Excel,完整可运行的代码示例如下:

import pandas as pd

# 模拟工作表名称列表
my_list = ['销售数据1', '销售数据2', '销售数据3']
df_collection = {}
total = {}

for sheet_name in my_list:
    # 生成对应DataFrame(这里用随机数据模拟业务逻辑)
    df = pd.DataFrame({'销售额': [100, 200, 300, 400, 500]})
    df_collection[sheet_name] = df
    # 计算当前工作表对应列的总和并存入字典
    total[sheet_name] = df['销售额'].sum()

# 写入Excel并添加总和
with pd.ExcelWriter('各区域销售数据.xlsx') as writer:
    for sheet_name, df in df_collection.items():
        df.to_excel(writer, sheet_name=sheet_name, index=False)
        # 获取当前工作表对象,将总和写入D32单元格
        worksheet = writer.sheets[sheet_name]
        worksheet['D32'] = f"总和: {total[sheet_name]}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:58:11