使用Pandas读取Excel文件时丢失前导零的问题求助
解决Pandas读取Excel时前导零丢失的问题(长度不固定场景)
核心问题原因
Pandas默认会将Excel中的数值型单元格解析为int/float类型,导致前导零被自动去除。由于你的数据长度不固定,无法通过补零恢复,必须在读取阶段强制保留原始字符串格式。
解决方案
方案1:全局指定所有列为字符串类型
适合所有列都需要保留前导零的场景,通过dtype=str参数强制Pandas以字符串格式读取所有单元格:
def readDataFromFile(self, file): try: # 强制所有列以字符串类型读取,保留原始前导零 df = pd.read_excel(file, dtype=str) data_list = df.values.tolist() print(f'{file} >> Read') return data_list except Exception as e: print(f'读取错误: {str(e)}') return
方案2:仅指定目标列为字符串类型
如果只有部分列需要保留前导零(比如列名为"Code"或列索引为0),可以精准指定对应列的类型,避免不必要的类型转换:
def readDataFromFile(self, file): try: # 仅将列名为"Code"的列以字符串类型读取 df = pd.read_excel(file, dtype={"Code": str}) # 或者用列索引指定:dtype={0: str} data_list = df.values.tolist() print(f'{file} >> Read') return data_list except Exception as e: print(f'读取错误: {str(e)}') return
额外提示
- 不要用
list作为变量名,它会覆盖Python内置的list类型,建议改为data_list这类有意义的名称。 - 如果Excel中目标列本身是文本格式,Pandas默认会读取为字符串,前导零不会丢失;如果是数值格式,必须通过上述方法强制转换。
内容的提问来源于stack exchange,提问作者LordLazor
相关产品推荐
相关产品推荐

