You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas透视表应用style.map后浮点数格式失效如何修复?

修复浮点数格式问题的方法

方法1:用style.format统一设置所有元素格式 + 条件样式

全局的pd.options.display.float_format对Styler对象不生效,且style.map仅处理单元格样式(比如颜色),不控制数值格式。可以直接通过Styler的format方法,一次性指定值、行索引、列标题的小数格式,再叠加条件样式:

import pandas as pd

df = pd.DataFrame(
    [
        [0.5, 1.5, 0.1], 
        [0.5, 2.5, 0.3], 
        [1.5, 1.5, 0.4], 
        [1.5, 2.5, 0.2]
    ],
    columns=['A', 'B', 'C']
)

pt = df.pivot_table(index='B', columns='A', values='C')

# 先统一设置格式:值、索引、列都保留2位小数,再叠加条件样式
(pt.style
 .format('{:,.2f}', subset=pd.IndexSlice[:, :])  # 设置所有单元格值的格式
 .format_index('{:,.2f}', axis=0)  # 设置行索引(B列)的格式
 .format_index('{:,.2f}', axis=1)  # 设置列标题(A列)的格式
 .map(lambda x: 'color:red;' if x > 0.2 else None)
)

方法2:用precision参数快速统一小数位数

如果所有元素都只需要保留2位小数,用precision参数更简洁,能一次性统一数值(包括索引、列、单元格值)的小数位数:

(pt.style
 .precision(2)  # 统一设置所有数值的小数位数为2
 .map(lambda x: 'color:red;' if x > 0.2 else None)
)

问题根源

pd.options.display.float_format是全局打印设置,仅对普通DataFrame的终端输出生效,Styler作为独立的渲染系统不会继承该配置。而style.map仅修改单元格样式,完全不影响数值的显示格式,所以表头和值的小数位数会回到默认状态,导致格式混乱。

内容的提问来源于stack exchange,提问作者Raf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:52:32