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

按唯一ID拆分多Dataframe生成含多Sheet的Excel文件问题

解决方法

你的问题核心是没针对每个ID分别去三个DataFrame里筛选对应记录,而是复用了df_1分组后的结果,导致无法正确导出另外两个DF的目标数据。下面是可行的实现方案:

实现思路

  1. 先整理出所有需要处理的唯一ID(可选覆盖三个DF中所有出现过的ID,或仅保留三个DF共有的ID)
  2. 遍历每个ID,分别从三个DF中筛选出该ID的对应行
  3. 用pd.ExcelWriter将三个筛选结果写入同一个Excel文件的不同工作表

完整代码示例

import pandas as pd

# 假设你的三个DataFrame为df_1、df_2、df_3
# 方式1:获取三个DF中所有出现过的唯一ID
unique_ids = pd.concat([df_1['ID'], df_2['ID'], df_3['ID']]).unique()

# 方式2:仅保留三个DF都存在的ID(按需切换)
# unique_ids = set(df_1['ID']).intersection(df_2['ID'], df_3['ID'])

for id_val in unique_ids:
    # 精准筛选当前ID在三个DF中的记录
    df1_target = df_1[df_1['ID'] == id_val]
    df2_target = df_2[df_2['ID'] == id_val]
    df3_target = df_3[df_3['ID'] == id_val]
    
    # 用with语句自动管理Excel写入器,无需手动save
    with pd.ExcelWriter(f'{id_val}.xlsx', engine='openpyxl') as writer:
        df1_target.to_excel(writer, sheet_name='DF_1', index=False)
        df2_target.to_excel(writer, sheet_name='DF_2', index=False)
        df3_target.to_excel(writer, sheet_name='DF_3', index=False)

关键细节说明

  • 布尔索引df['ID'] == id_val能精准定位目标ID的记录,避免导出全部数据
  • 使用with语句管理ExcelWriter,代码更简洁且能自动释放资源
  • 工作表名称可根据需求修改,比如改成f'{id_val}_DF1'这类格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:12:26