如何使用pd.ExcelFile读取Excel时将所有列设为字符串类型?
使用pd.ExcelFile指定全局字符串类型导入数据
当然可以用pd.ExcelFile实现指定数据类型的需求!其实ExcelFile.parse()方法和我们常用的pd.read_excel()共享大部分参数,其中就包括用来定义数据类型的dtype参数,刚好能解决你遇到的科学计数法问题。
你提到加载前不知道列名,需要把所有内容都以字符串类型导入,这个需求很容易实现——只需要在调用parse()的时候传入dtype=str,这样所有列都会被强制解析成字符串类型,从根源上避免数字被显示为科学计数法的情况。
先帮你修正原代码里的语法错误(原if语句的写法不符合Python规范),再给出完整的可运行代码:
import pandas as pd # 先拼接完整的文件路径,用f-string更简洁直观 full_file_path = f"{path}\\{name}" # 初始化ExcelFile对象 excel_file = pd.ExcelFile(full_file_path) # 遍历所有工作表 for sheet_name in excel_file.sheet_names: # 解析时指定所有列的类型为字符串 df = excel_file.parse(sheet_name, dtype=str) # 这里可以添加你的后续处理逻辑,比如查看数据或保存文件 print(f"工作表 {sheet_name} 已完成解析,所有列均为字符串类型")
补充说明:
- 如果之后你发现某几列需要保留原始数值类型,可以把
dtype改成字典格式(比如dtype={"列名1": int, "列名2": float}),但当前场景下直接传str就能满足全局转字符串的需求。 - 这种方式会把日期、数字等所有单元格内容都转为字符串,如果你后续需要恢复特定列的类型,可以用
pd.to_numeric()或pd.to_datetime()单独处理。
内容的提问来源于stack exchange,提问作者michal111
相关产品推荐
相关产品推荐

