使用pd.read_excel导入多工作表:仅指定表设置skiprows的问题
解决指定工作表设置
skiprows的问题 你的问题在于使用pd.read_excel同时读取多个工作表时,skiprows参数不能直接通过[8, None, None, None]这种方式为单个工作表指定规则——pandas无法识别None作为该参数的有效值来跳过设置。下面是两种更可靠的解决方案,既能通过工作表名称精准控制,又能高效处理大文件:
方案1:逐个读取工作表(清晰直观)
先创建ExcelFile对象(适合大文件,避免重复读取磁盘),然后针对每个工作表单独设置参数:
import pandas as pd # 加载Excel文件到内存,仅一次操作 xls = pd.ExcelFile('TUp.xlsx') # 初始化字典存储所有工作表数据 TuFile = {} # 按名称读取各工作表,仅给Summary设置skiprows=8 TuFile['T_up'] = pd.read_excel(xls, sheet_name='T_up') TuFile['Raw_Data'] = pd.read_excel(xls, sheet_name='Raw_Data') TuFile['Base'] = pd.read_excel(xls, sheet_name='Base') TuFile['Summary'] = pd.read_excel(xls, sheet_name='Summary', skiprows=8)
方案2:字典推导式(简洁高效)
如果工作表数量较多,可以用字典推导式简化代码:
import pandas as pd xls = pd.ExcelFile('TUp.xlsx') target_sheets = ['T_up','Raw_Data','Base','Summary'] TuFile = { sheet: pd.read_excel(xls, sheet_name=sheet, skiprows=8 if sheet == 'Summary' else None) for sheet in target_sheets }
补充说明
你原来的xls.parse(xls.sheet_names[3], skiprows=8)能正常运行,是因为parse是针对单个工作表的方法;如果想用名称代替索引,直接把xls.sheet_names[3]换成对应的工作表名'Summary'即可:
# 单独读取Summary表的简化写法 summary_df = xls.parse('Summary', skiprows=8)
这种逐个处理的方式,既满足了你通过名称指定目标表的需求,又能精准控制每个工作表的读取参数,同时对大文件更友好。
内容的提问来源于stack exchange,提问作者Dayvid F
相关产品推荐
相关产品推荐

