如何用Pandas将Excel多工作表转为独立DataFrame?解决返回字典问题
解决pandas读取Excel返回字典而非DataFrame的问题
问题原因
当pd.read_excel()的sheet_name参数传入列表时,无论列表里有几个元素,pandas都会返回一个字典:键是工作表名称,值是对应工作表的DataFrame。你传入了['Product Capacity']这个单元素列表,所以得到的是字典而非单个DataFrame。
解决方案
1. 读取单个工作表,直接得到DataFrame
把sheet_name的值改为字符串形式,而非列表:
import pandas as pd df = pd.read_excel("path", sheet_name='Product Capacity')
2. 读取所有5个工作表,生成独立的DataFrame
如果需要把工作簿里的5个工作表都转为独立的DataFrame,可以先读取所有工作表得到字典,再逐个提取:
import pandas as pd # sheet_name=None会自动识别并读取所有工作表 all_sheets = pd.read_excel("path", sheet_name=None) # 假设你的5个工作表名为'Product Capacity', 'Sales Data', 'Inventory', 'Customer Info', 'Logs' # 逐个提取为独立变量 df_product_capacity = all_sheets['Product Capacity'] df_sales_data = all_sheets['Sales Data'] df_inventory = all_sheets['Inventory'] df_customer_info = all_sheets['Customer Info'] df_logs = all_sheets['Logs']
如果工作表名称已知,也可以用循环批量生成变量:
import pandas as pd sheet_names = ['Product Capacity', 'Sales Data', 'Inventory', 'Customer Info', 'Logs'] all_sheets = pd.read_excel("path", sheet_name=sheet_names) # 循环生成以工作表名命名的变量(空格替换为下划线) for sheet_name in sheet_names: var_name = f'df_{sheet_name.replace(" ", "_")}' globals()[var_name] = all_sheets[sheet_name]
内容的提问来源于stack exchange,提问作者kanika
相关产品推荐
相关产品推荐

