使用pandas.read_excel读取Excel时CODE列前导零丢失问题求助
解决pandas读取Excel时带前导零列丢失前导零的问题
问题描述
原Excel文件中CODE列包含带前导零的数值(如032040014),使用
pandas.read_excel时指定dtype={"CODE":str},但读取后CODE列前导零被自动去除。
原Excel内容:
CODE QUANTITY PRICE 1 032040014 32 15.60 2 032039012 5 12.30 3 023703010 10 17.80
使用的代码:
import pandas as pd file_ = pd.read_excel(file_name, dtype={"CODE":str})
读取后结果:
CODE QUANTITY PRICE 1 32040014 32 15.60 2 32039012 5 12.30 3 23703010 10 17.80
解决方案
使用
converters参数替代dtypeconverters会在读取每个单元格时直接执行转换函数,优先级高于dtype,能避免Excel数值格式带来的解析问题:import pandas as pd file_ = pd.read_excel(file_name, converters={"CODE": str})修改Excel单元格格式为文本
若Excel中CODE列是数值格式,即使指定dtype也会先按数值解析。先修改单元格格式:- 选中CODE列所有单元格
- 右键→「设置单元格格式」→选择「文本」→确定
- 重新保存文件后,再用原代码读取即可保留前导零
读取后补全前导零(适用于固定长度的CODE)
如果知道CODE的固定长度(比如示例中是9位),读取后用str.zfill()补全:file_['CODE'] = file_['CODE'].astype(str).str.zfill(9)
内容的提问来源于stack exchange,提问作者ErPeppe99
相关产品推荐
相关产品推荐

