如何将CSV转换为Excel文件并保留数值的int整数类型
CSV转XLSX数值变为文本类型的修复方案
核心原因是pandas读取CSV时,若数值存在前后空格、隐形符号、被引号包裹等情况,会被自动推断为字符串类型,导出到Excel后默认显示为文本格式,无法直接计算。
以下是可直接使用的调整方案:
- 方案1:读取阶段自动转换数值类型
读取CSV后调用convert_dtypes()方法,自动推断并转换为对应数值类型,适配大多数常规场景:r_csv = pd.read_csv(nowDate.strftime("%Y-%m-%d_%H_%M_%S") + ".csv").convert_dtypes() # 若确认所有列均为整数,可直接指定全局类型 # r_csv = pd.read_csv(nowDate.strftime("%Y-%m-%d_%H_%M_%S") + ".csv", dtype="int64") - 方案2:脏数据场景下的强制转换
如果CSV中的数值附带空白、引号等冗余字符,先清理内容再转数值类型:r_csv = pd.read_csv(nowDate.strftime("%Y-%m-%d_%H_%M_%S") + ".csv") # 逐列清理空白字符后转数值,无法转换的内容会置为空值方便排查 for col in r_csv.columns: r_csv[col] = pd.to_numeric(r_csv[col].astype(str).str.strip(), errors="coerce") - 方案3:写入阶段规避引擎兼容问题
旧版本pandas默认写入引擎可能存在格式兼容问题,可指定openpyxl引擎写入:save_xlsx = pd.ExcelWriter(nowDate.strftime("%Y-%m-%d_%H_%M_%S") + '.xlsx', engine="openpyxl") r_csv.to_excel(save_xlsx, index=False) # 高版本pandas推荐使用close()代替save()方法 save_xlsx.close()
如果转换后出现空值,可排查对应位置的CSV原始内容是否包含非数字字符。
内容的提问来源于stack exchange,提问作者김정엽
相关产品推荐
相关产品推荐

