Pandas导出Excel时长数字字符串列显示科学计数法如何展示完整值
解决方法
Excel默认会将超过11位的纯数字内容识别为数值类型,自动转为科学计数法展示,即便你提前在pandas里转了字符串,xlsxwriter导出时仍可能默认触发数值识别逻辑,两种可直接落地的修改方案如下:
方案1:通过xlsxwriter设置单元格文本格式(推荐)
不需要修改原始DataFrame数据,仅通过设置Excel列格式实现,不会额外添加冗余字符:
import pandas as pd EUROC= pd.read_excel(f'{NewFilePath}{NewFile}', sheet_name="EUROC") # 保留转字符串的逻辑,避免原始数值精度丢失 EUROC['case_id']=EUROC['case_id'].astype(str) FileFinal='Test Prueba.xlsx' full_path_file = f'{ICSPath}{FileFinal}' with pd.ExcelWriter(full_path_file, engine='xlsxwriter') as writer: EUROC.to_excel(writer, sheet_name='EUROC', index=False) # 获取工作簿和工作表对象 workbook = writer.book worksheet = writer.sheets['EUROC'] # 定义文本格式 text_format = workbook.add_format({'num_format': '@'}) # 获取case_id列的索引位置 case_id_col = EUROC.columns.get_loc('case_id') # 设置对应列的格式:列范围、列宽、格式 worksheet.set_column(case_id_col, case_id_col, 18, text_format)
方案2:给字符串添加强制文本前缀
操作更简单,在字符串前添加Excel识别为文本标记的单引号,Excel中不会显示该前缀,仅强制内容按文本展示:
EUROC= pd.read_excel(f'{NewFilePath}{NewFile}', sheet_name="EUROC") # 转字符串的同时加单引号前缀 EUROC['case_id']= "'" + EUROC['case_id'].astype(str) FileFinal='Test Prueba.xlsx' full_path_file = f'{ICSPath}{FileFinal}' writer = pd.ExcelWriter(full_path_file, engine='xlsxwriter') EUROC.to_excel(writer, sheet_name='EUROC', index=False) writer.save()
内容的提问来源于stack exchange,提问作者Webb
相关产品推荐
相关产品推荐

