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

