如何将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
相关产品推荐
相关产品推荐

