如何让Pandas DataFrame列值统一显示为两位小数?
解决Pandas DataFrame price列统一显示两位小数的问题
嘿,我懂你遇到的这个困扰——明明用round(x,2)把数值四舍五入到两位小数了,但像0.5这种值还是只显示一位小数。其实这是数值存储和显示格式的区别:round已经把数值处理成两位小数了,但Pandas默认会省略末尾的零,所以看起来没达到预期。下面给你两种实用的解决方案,按需选就行:
方法1:保留数值类型,仅修改显示格式(推荐)
这种方法不会改变列的数值类型,只是强制让Pandas显示两位小数,非常适合后续还要做数值计算的场景。
全局生效(所有浮点列都显示两位小数)
一行代码搞定全局设置,之后整个DataFrame里的浮点列都会以两位小数展示:
import pandas as pd pd.options.display.float_format = '{:.2f}'.format
设置完后,0会显示成0.00,0.5变成0.50,完全符合你的需求。
仅针对price列生效(不影响其他列)
如果只想让price列按要求显示,其他列保持原样,可以用style.format:
display(DF.style.format({'price': '{:.2f}'}))
注意:这个方法主要用于Jupyter Notebook这类交互式环境的展示,如果要导出文件,得结合导出参数一起用。
方法2:转换为字符串类型(固定显示格式)
要是你不需要再对price列做数值运算,或者需要导出成固定格式的文本,直接把列转成字符串就行:
DF['price'] = DF['price'].apply(lambda x: "{:.2f}".format(round(x, 2)))
处理后,price列会变成字符串类型,每个值都严格显示两位小数:
- 0 → "0.00"
- 0.5 → "0.50"
- 1.133333 → "1.13"
导出文件时的额外设置
如果要把结果导出成CSV或Excel,也能确保两位小数格式:
- 导出CSV:
DF.to_csv('output.csv', float_format='%.2f')
- 导出Excel:
DF.to_excel('output.xlsx', float_format='%.2f')
内容的提问来源于stack exchange,提问作者Ryan Reid
相关产品推荐
相关产品推荐

