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

如何在Pandas DataFrame中实现部分列去小数、部分列保留两位小数

DataFrame多列差异化格式设置方案

需求明确

  • RFW Total、Hit Count、Cover Count、Tie Wins、Tie Away列:去掉小数,以整数形式显示
  • Hit Ratio %、Cover Ratio %、Tie Ratio %、Revenue列:四舍五入后保留两位小数

现有代码的问题

  1. 先全局调用.round(decimals=2)会统一处理所有列的小数,后续格式设置容易出现冲突
  2. 注释里的.style.format写法不完整,既未闭合括号,也没给整数列使用正确的格式符

正确实现方式

直接通过Styler.format()传入格式规则字典,为不同列指定对应格式即可,无需提前全局round:

# 先构造DataFrame,跳过全局round步骤
df1 = pd.DataFrame(DF_data, index=index_labels)

# 定义各列的格式规则
format_map = {
    # 整数列:用:,.0f实现千分位分隔+无小数(自动四舍五入到整数)
    'RFW Total': '{:,.0f}',
    'Hit Count': '{:,.0f}',
    'Cover Count': '{:,.0f}',
    'Tie Wins': '{:,.0f}',
    'Tie Away': '{:,.0f}',
    # 需保留两位小数的列:千分位分隔+两位小数
    'Hit Ratio %': '{:,.2f}',
    'Cover Ratio %': '{:,.2f}',
    'Tie Ratio %': '{:,.2f}',
    'Revenue': '{:,.2f}'
}

# 应用格式
styled_df = df1.style.format(format_map)
styled_df

补充说明

  • 如果Tie Ratio %需要显示为百分比格式(比如把0.35转换为35.00%),可将格式改为'{:,.2f}%',同时记得提前将该列数值乘以100
  • 若不需要千分位分隔符,可把格式符里的,去掉,比如整数列写成'{:.0f}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:50:12