pandas打印浮点数小数位数不固定?如何设置固定小数位并自动四舍五入
问题原因
pandas默认的浮点数打印逻辑是自动适配列内最长的有效小数位数做对齐,仅调整展示效果,不影响实际存储的数值精度:
- 第一个场景下CSV中存在
14.54345774这个值,四舍五入后需要6位小数展示,所以整列统一显示6位小数,不足的末尾补0 - 第二个场景下你将该值改为
14.543后,列内最长的有效小数位数是16.25664的5位,所以整列自动切换为显示5位小数
解决方法
你之前用round方法无法补0是因为round仅调整数值本身,pandas默认显示规则会自动省略数值末尾的无意义0,只需要修改显示配置即可实现固定小数位、自动四舍五入、不足补0的需求。
方法1:全局生效配置
导入pandas后添加全局参数设置,所有浮点数列都会按固定格式打印:
import pandas as pd # 全局设置浮点数显示为6位小数,自动四舍五入、不足补0 pd.set_option('display.float_format', lambda x: f'{x:.6f}')
方法2:仅针对指定列生效
如果不想修改全局配置,只需要调整某一列的打印格式,可以使用Styler:
# 仅将Number列按6位小数格式打印 print(df.style.format({'Number': '{:.6f}'}))
方法3:同时修改存储精度+显示格式
如果你需要实际存储的数值也固定为6位小数,可以结合round方法和显示配置使用:
# 实际数值四舍五入到6位 df['Number'] = df['Number'].round(6) # 显示配置保证补0 pd.set_option('display.float_format', lambda x: f'{x:.6f}')
内容的提问来源于stack exchange,提问作者Pro
相关产品推荐
相关产品推荐

