Pandas DataFrame对象中是否保存了读取时对应的Excel工作表名称?
关于Pandas DataFrame是否存储读取来源Excel工作表名的解答
默认情况下,Pandas的DataFrame对象没有内置的官方属性存储读取时对应的Excel工作表名称,read_excel方法默认不会将工作表名称这类数据源元信息写入生成的DataFrame中。
你可以通过以下两种常用方案实现需求:
- 手动存储工作表名到
DataFrame的元数据属性
推荐使用Pandas 1.0版本后新增的attrs属性存储自定义元数据,该属性会在绝大多数DataFrame操作中被保留,比直接给对象挂载自定义属性更稳妥:
import pandas as pd target_sheet = "销售数据" df = pd.read_excel("业务报表.xlsx", sheet_name=target_sheet) # 写入工作表名到元数据 df.attrs["sheet_name"] = target_sheet # 后续需要获取时直接调用即可 print(df.attrs["sheet_name"])
- 批量读取时直接从返回结果获取工作表名
如果你一次性读取Excel文件的多个工作表,给read_excel的sheet_name参数传None时,会返回「工作表名为键、对应DataFrame为值」的字典,你可以遍历字典同时获取表名和数据:
# 读取文件内所有工作表 df_dict = pd.read_excel("业务报表.xlsx", sheet_name=None) for sheet_name, df in df_dict.items(): print(f"当前处理的工作表为:{sheet_name}") # 也可以批量将表名存入对应DataFrame的元数据中 df.attrs["sheet_name"] = sheet_name
注:DataFrame是通用的二维表格数据结构,设计之初没有绑定Excel场景的专属属性,因此不会默认存储读取来源的工作表信息,所有和业务、数据源相关的自定义元数据都需要用户主动存储。
内容的提问来源于stack exchange,提问作者Trekkie
相关产品推荐
相关产品推荐

