如何使用pd.ExcelFile引用Excel文件中的所有工作表?
嘿,别担心!刚上手Pandas和Python的时候,遇到这种重复手动操作的问题太正常了~ 你现在的写法需要一个个手动定义df1、df2,不仅麻烦,要是工作表数量变了还得改代码,确实不够灵活。
我来给你两个简单的方法,轻松搞定读取所有工作表的需求:
方法1:用sheet_name=None直接读取所有工作表(最推荐)
Pandas的read_excel函数有个sheet_name参数,当你把它设为None时,会自动读取文件里的所有工作表,并返回一个字典——字典的键是工作表名称,值就是对应工作表的DataFrame。
代码示例:
import pandas as pd # 读取整个Excel文件,所有工作表存入字典 excel_data = pd.read_excel('你的文件路径.xlsx', sheet_name=None) # 先看看所有工作表的名字,确认是不是都读进来了 print("所有工作表名称:", list(excel_data.keys())) # 访问单个工作表,比如叫"销售数据"的表 sales_df = excel_data['销售数据'] # 要是想遍历所有工作表做统一处理,比如打印每个表的前5行 for sheet_name, df in excel_data.items(): print(f"\n=== 工作表:{sheet_name} ===") print(df.head()) # 显示前5行数据
方法2:用pd.ExcelFile结合循环解析
如果你已经创建了pd.ExcelFile对象(就像你代码里写的那样),也可以通过循环逐个解析每个工作表,把它们存入字典:
import pandas as pd xlsx = pd.ExcelFile('你的文件路径.xlsx') sheet_names = xlsx.sheet_names # 获取所有工作表名称 # 创建空字典存储所有DataFrame all_dfs = {} for name in sheet_names: all_dfs[name] = xlsx.parse(name) # 同样可以访问单个工作表 user_df = all_dfs['用户信息']
额外小技巧:合并所有工作表
要是你想把所有工作表的数据合并成一个大的DataFrame,可以用pd.concat,还能保留每个数据来自哪个工作表:
combined_df = pd.concat( excel_data.values(), keys=excel_data.keys(), names=['来源工作表', '原行索引'] ).reset_index(level=1, drop=True)
这样就不用再手动一个个定义df1到dfN啦,不管工作表数量怎么变,代码都能自动适配~
内容的提问来源于stack exchange,提问作者cchev
相关产品推荐
相关产品推荐

