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

如何在Great Tables中替换DataFrame的inf与nan值为短横或N/A

替换Great Tables中inf和nan的显示值

要让GT表格里的inf(无穷大)和nan(缺失值)显示为更易懂的标识,比如短横-或N/A,有两种实用方法:

方法1:预处理DataFrame替换值

直接在Pandas层面替换目标值,再传入GT生成表格,适合需要修改原始数据的场景:

import pandas as pd
import numpy as np
from great_tables import GT

df = pd.DataFrame({'Foodbank': {0: 'study',
  1: 'generation',
  2: 'near',
  3: 'sell',
  4: 'former',
  5: 'line',
  6: 'ok',
  7: 'field',
  8: 'last',
  9: 'really',
  10: 'particularly',
  11: 'must',
  12: 'drive',
  13: 'herself',
  14: 'learn'}, 
 '%(LY)': {0: -20.93,
  1: -19.23,
  2: -26.09,
  3: 150.0,
  4: 90.24,
  5: -23.85,
  6: np.nan,
  7: np.inf,
  8: np.inf,
  9: np.inf,
  10: np.inf,
  11: -35.48,
  12: np.nan,
  13: np.nan,
  14: -1.3}})

# 替换inf、-inf和nan为短横(-)
df.replace([np.inf, -np.inf, np.nan], '-', inplace=True)

# 生成GT表格
GT(df)

方法2:使用Great Tables内置格式化函数

不修改原始DataFrame,通过GT的fmt()方法自定义规则,同时还能对正常数值做格式化处理:

import pandas as pd
import numpy as np
from great_tables import GT

df = pd.DataFrame({'Foodbank': {0: 'study',
  1: 'generation',
  2: 'near',
  3: 'sell',
  4: 'former',
  5: 'line',
  6: 'ok',
  7: 'field',
  8: 'last',
  9: 'really',
  10: 'particularly',
  11: 'must',
  12: 'drive',
  13: 'herself',
  14: 'learn'}, 
 '%(LY)': {0: -20.93,
  1: -19.23,
  2: -26.09,
  3: 150.0,
  4: 90.24,
  5: -23.85,
  6: np.nan,
  7: np.inf,
  8: np.inf,
  9: np.inf,
  10: np.inf,
  11: -35.48,
  12: np.nan,
  13: np.nan,
  14: -1.3}})

# 自定义格式化函数
def format_col_values(val):
    if pd.isna(val):
        return 'N/A'
    elif val in [np.inf, -np.inf]:
        return '-'
    else:
        # 保留两位小数显示正常数值
        return f"{val:.2f}"

# 生成GT表格并应用格式化规则
GT(df).fmt(
    columns="%(LY)",
    fns=format_col_values
)

两种方法对比

  • 方法1操作简单,直接修改数据,适合后续还需使用处理后数据的场景;
  • 方法2保留原始数据完整性,且能灵活控制数值显示格式,适合仅需美化表格展示的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:58:33