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

如何将Pandas读取Excel生成的嵌套字典/DataFrame拆分为对应表名的对象

解决方案:拆分Excel多工作表为独立DataFrame/字典

一、最优方式:读取时直接获取各工作表的独立数据结构

用pandas.read_excel的sheet_name=None参数,会直接返回一个键为工作表名称、值为对应DataFrame的字典,无需后续拆分:

import pandas as pd

# 读取Excel文件,sheet_name=None返回所有工作表的字典
sheet_dict = pd.read_excel("你的文件路径.xlsx", sheet_name=None)

# 遍历字典,获取每个工作表的独立DataFrame
for name, df in sheet_dict.items():
    # 这里可直接使用df,比如保存为csv:df.to_csv(f"{name}.csv", index=False)
    print(f"工作表 {name} 数据:")
    print(df)

提示:不建议直接将每个DataFrame赋值为全局变量(比如globals()[name] = df),容易造成变量名混乱,用字典统一管理更清晰。

二、针对已生成的嵌套字典/合并DataFrame的拆分方法

1. 拆分嵌套字典

如果你的嵌套字典结构是{工作表名: {列名: 数据列表}},直接遍历转成DataFrame即可:

# 假设你的嵌套字典为nested_data
for sheet_name, col_data in nested_data.items():
    sheet_df = pd.DataFrame(col_data)
    print(f"{sheet_name} 独立DataFrame:")
    print(sheet_df)

2. 拆分合并后的DataFrame

如果已经将所有工作表数据合并成一个大DataFrame(列按工作表分组,比如sheet1_a、sheet1_b),按以下步骤拆分:

# 假设合并后的DataFrame为merged_df
# 提取所有唯一的工作表名称
sheet_names = list(set(col.split("_")[0] for col in merged_df.columns))

for name in sheet_names:
    # 筛选当前工作表的所有列
    target_cols = [col for col in merged_df.columns if col.startswith(f"{name}_")]
    # 提取列并去除工作表前缀,得到独立DataFrame
    sheet_df = merged_df[target_cols].rename(columns=lambda x: x.split("_")[-1])
    print(f"{name} 独立DataFrame:")
    print(sheet_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:20:20