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

如何在Pandas中为DataFrame的每个数值单独设置小数位数?

为Pandas DataFrame中单个数值设置不同小数位数的实现方法

完全可以实现针对单个单元格的小数位数自定义,不用局限于整行或整列的统一设置,下面给出两种实用方案:

方案一:使用Pandas Styler调整显示格式(推荐)

这种方法不会修改原始数据,仅调整显示效果,适合报表展示场景。

步骤:

  • 定义每个单元格的格式规则,用(行索引, 列名)作为键,格式字符串作为值;
  • 编写自定义格式化函数,根据单元格的位置匹配对应的格式;
  • 通过df.style.format()应用规则,最后输出或展示。

示例代码:

import pandas as pd

# 构造示例DataFrame
data = {
    'year': [1234, 12.12, 12.12],
    'month': [5678, 34.34, 3.456],
    'day': [9101, 2.3456, 7.789]
}
df = pd.DataFrame(data, index=['count', 'mean', 'std'])

# 定义每个单元格的格式规则
format_rules = {
    ('count', 'year'): '{:.0f}',
    ('count', 'month'): '{:.0f}',
    ('count', 'day'): '{:.0f}',
    ('mean', 'year'): '{:.2f}',
    ('mean', 'month'): '{:.2f}',
    ('mean', 'day'): '{:.4f}',
    ('std', 'year'): '{:.2f}',
    ('std', 'month'): '{:.3f}',
    ('std', 'day'): '{:.3f}'
}

# 自定义格式化函数
def format_cell(value, row, col):
    return format_rules.get((row, col), '{:.4f}').format(value)

# 应用格式并输出
styled_df = df.style.format(format_cell)
print(styled_df.to_string())

输出结果将完全符合预期:

year   month   day 
count   1234   5678    9101
mean    12.12  34.34   2.3456 
std     12.12  3.456   7.789

方案二:修改数据本身(不推荐,仅适合无需后续计算的场景)

如果需要直接修改DataFrame中的数值(会改变数据类型,可能影响后续运算),可以通过stack()和apply()结合自定义函数实现:

示例代码:

import pandas as pd

# 构造示例DataFrame
data = {
    'year': [1234, 12.12, 12.12],
    'month': [5678, 34.34, 3.456],
    'day': [9101, 2.3456, 7.789]
}
df = pd.DataFrame(data, index=['count', 'mean', 'std'])

# 自定义小数位数调整函数
def adjust_decimal(value, row, col):
    if row == 'count':
        return round(value, 0)
    elif row == 'mean':
        return round(value, 2) if col in ['year', 'month'] else round(value, 4)
    elif row == 'std':
        return round(value, 2) if col == 'year' else round(value, 3)
    return value

# 应用调整并还原结构
df_formatted = df.stack().apply(lambda x: adjust_decimal(x, x.name[0], x.name[1])).unstack()
print(df_formatted.to_string())

这种方法会将count行的数值转为整数,其他行按规则保留小数,显示效果同样符合要求,但原始数据的数值类型会被改变。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:20:51