如何将多脚本生成的DataFrame数据合并至Excel新工作表?
需求完全可以实现,以下是具体实现思路和代码示例
核心步骤
- 读取目标Excel中所有工作表的DataFrame,合并成统一数据集
- 按
Deal(买卖类型)、Counterparty(交易对手)、Commodity(商品)分组,对Total列求和 - 将聚合结果转换为你需要的分层展示格式
- 将最终结果写入原Excel的新工作表
Sheet3
代码实现(基于pandas)
首先确保安装必要依赖:
pip install pandas openpyxl
编写处理脚本:
import pandas as pd # 替换为你的目标Excel文件路径 excel_path = "target_file.xlsx" # 1. 读取Excel中所有工作表,返回{sheet名: DataFrame}的字典 sheet_dict = pd.read_excel(excel_path, sheet_name=None) # 2. 合并所有结构一致的工作表数据 combined_df = pd.concat(sheet_dict.values(), ignore_index=True) # 3. 按需求分组求和,转换为分层展示格式 aggregated_data = combined_df.groupby(['Deal', 'Counterparty', 'Commodity'])['Total'].sum().unstack(level=2) # 4. 将结果写入原Excel的Sheet3,若已存在则覆盖原有内容 with pd.ExcelWriter(excel_path, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer: aggregated_data.to_excel(writer, sheet_name='Sheet3')
结果说明
运行后生成的Sheet3会完全匹配你的需求:
- 第一级索引为
Sell/Buy,第二级为交易对手 - 列对应商品名称(如Oil),单元格值为该对手对应买卖类型的
Total总和
额外建议
- 可将这段逻辑整合到你每日生成Excel的脚本末尾,实现自动更新
Sheet3 - 若不同工作表列名存在差异,需先统一列名再执行合并操作
- 如需按日期筛选数据(比如仅统计当日记录),可在合并后添加:
combined_df = combined_df[combined_df['Date'] == '04/03/2024'](注意日期格式需与数据匹配)
内容的提问来源于stack exchange,提问作者iBeMeltin
相关产品推荐
相关产品推荐

