pandas.to_csv导出csv文件时浮点数未保留两位小数如何解决
解决方案
你可以通过以下两种方式实现导出csv时weight列保留两位小数:
方法1:使用to_csv的float_format参数全局设置
这是最简单的方案,会对DataFrame中所有浮点类型的列统一生效,导出时自动保留两位小数:
import pandas import numpy sample_data = { 'item': numpy.array(['item1', 'item1', 'item3'], dtype='str'), 'weight': numpy.array([140.00, 3.00, 90.50], dtype='float64') } df = pandas.DataFrame(sample_data) # 新增float_format参数设置浮点数格式 df.to_csv('filepath', float_format='%.2f')
- 参数说明:
float_format='%.2f'表示将所有浮点数格式化为保留2位小数的形式,末尾无意义的0也会自动补全。 - 优势:导出后csv的数值列如果后续用pandas读取,仍会被识别为浮点类型,无需额外格式转换。
方法2:单独格式化指定列
如果你不需要修改所有浮点列,仅需要调整weight列的格式,可以先将该列转为保留两位小数的字符串类型后再导出:
# 仅格式化weight列,保留两位小数 df['weight'] = df['weight'].apply(lambda x: f"{x:.2f}") # 正常导出即可 df.to_csv('filepath')
- 适用场景:DataFrame存在多个浮点列,仅部分列需要固定小数位数的场景。
- 注意:该方法导出后
weight列在csv中是字符串格式,后续读取时如果需要做数值计算,需要手动转换为浮点类型。
内容的提问来源于stack exchange,提问作者Basir Miah
相关产品推荐
相关产品推荐

