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

如何设置Pandas DataFrame浮点数显示为1K/1M/1B可读格式且不修改原值

解决方案

你可以通过自定义数值格式化函数,配合pandas的显示配置实现需求,完全不会改动DataFrame存储的原始数值,也不需要额外新增列。

方法1:全局生效配置(所有DataFrame显示都遵循该格式)

先定义可读数值格式化函数,再赋值给pandas全局显示参数即可:

import pandas as pd

def human_readable_format(num):
    units = [
        (1e12, 'T'),
        (1e9, 'B'),
        (1e6, 'M'),
        (1e3, 'K'),
        (1, '')
    ]
    for threshold, unit in units:
        if abs(num) >= threshold:
            # 保留2位小数,可按需调整小数位数
            return f"{num / threshold:.2f}{unit}"
    return f"{num:.2f}"

# 配置全局显示格式
pd.options.display.float_format = human_readable_format

测试你提供的示例DataFrame,输出效果如下:

0
0   10.00
1  100.00
2    1.00K
3   10.00K
4  100.00K
5    1.00M
6   10.00M
7  100.00M
8    1.00B
9   10.00B

如果后续需要恢复默认显示格式,执行pd.reset_option('display.float_format')即可。

方法2:单表临时生效(仅当前DataFrame显示生效,不影响全局配置)

如果你不想修改全局配置,只需要给单个DataFrame设置显示样式即可:

# 示例DataFrame
df = pd.DataFrame([10.,100.,1000.,10000.,100000.,1000000.,10000000.,100000000.,1000000000.,10000000000.])
# 应用格式化显示
df.style.format(human_readable_format)

该方法仅修改当前DataFrame的渲染显示效果,原始数值完全不变,不影响后续任何计算逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:06:08