You need to enable JavaScript to run this app. 如何将Pandas DataFrame的Volume列数值转为带M后缀的百万单位格式
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas DataFrame的Volume列数值转为带M后缀的百万单位格式

Pandas DataFrame 调整Volume列大数值为M后缀展示的方法

实现逻辑

要达到示例里58792000.0显示为58.792M的效果,换算关系很直接:1M对应100万,把原列数值除以1e6,保留3位小数后拼接M后缀就行。优先用展示层做格式化,别把原列的数值改成字符串,不然后面算均值、筛数据、画图的时候容易出问题。

具体操作

  1. 先写个处理单个数值的转换函数
    import pandas as pd
    def format_volume(val):
        # 遇到空值直接返回,避免报错
        if pd.isna(val):
            return val
        return f"{val / 1e6:.3f}M"
    
  2. 按场景选应用方式
    • 只是看着舒服、原数值要留着做计算的话(最常用):用pandas自带的style.format配置,不会动原列的内容
      df.style.format({"Volume": format_volume})
      
    • 需要单独存一份格式化好的字符串列的话:用apply逐行转
      df["Volume_show"] = df["Volume"].apply(format_volume)
      

通用扩展

要是之后还要处理更小的千级数值、更大的十亿级数值,就把转换函数改成自动匹配量级的版本,不用每次手动除以对应的换算值:

def format_big_num(val):
    if pd.isna(val):
        return val
    abs_val = abs(val)
    if abs_val >= 1e9:
        return f"{val / 1e9:.3f}B"
    elif abs_val >= 1e6:
        return f"{val / 1e6:.3f}M"
    elif abs_val >= 1e3:
        return f"{val / 1e3:.3f}K"
    else:
        return f"{val:.3f}"

踩坑提醒

  • 别直接把转换后的字符串值覆盖回原Volume列,一旦列类型从浮点变成字符串,后续做数值运算全要报错
  • 要改小数位数很简单,把格式化字符串里的.3f改成对应数字就行,比如要2位小数就写成.2f

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 11:54:00