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

如何设置含numpy.ndarray的pandas.DataFrame的显示精度?

自定义DataFrame中numpy数组的显示精度(保留4位小数)

当DataFrame的列元素为numpy.ndarray浮点数组时,直接使用pd.option_context('display.precision', 4)或np.printoptions(precision=4)无法调整数组的显示精度,同时默认显示会截断数组内容。以下是解决方法:

解决方案:自定义格式化函数

通过编写格式化函数将numpy数组转换为保留指定小数位数的字符串,再应用到DataFrame对应列,同时配合pandas设置调整普通浮点列的精度。

完整代码示例

import numpy as np
import pandas as pd

np.random.seed(12345)

df = pd.DataFrame({
  'a': np.random.rand(1),
  'b': np.random.rand(1),
  'A': [np.random.rand(5)],
  'B': [np.random.rand(5)],
  'C': [np.random.rand(5)],
})

# 定义数组格式化函数:保留4位小数,完整显示所有元素
def format_array(arr):
    formatted_elements = [f"{x:.4f}" for x in arr]
    return f"[{', '.join(formatted_elements)}]"

# 控制普通浮点列精度,同时对数组列应用格式化
with pd.option_context('display.precision', 4):
    styled_df = df.style.format({
        'A': format_array,
        'B': format_array,
        'C': format_array
    })
    display(styled_df)

说明

  1. format_array函数遍历数组元素,将每个值格式化为4位小数的字符串,再拼接成类似原生数组的字符串格式。
  2. pd.option_context('display.precision', 4)用于控制普通浮点列(如a、b)的显示精度。
  3. df.style.format将自定义函数绑定到包含数组的列,实现完整且精度可控的显示效果。

替代方案:全局调整numpy数组输出

若希望全局统一numpy数组的显示规则,可修改numpy打印选项,同时配合pandas设置:

# 设置numpy数组显示:4位小数、不使用科学计数法、完整显示所有元素
np.set_printoptions(precision=4, suppress=True, threshold=np.inf)
# 设置pandas普通浮点列精度
pd.set_option('display.precision', 4)

# 将数组列转换为字符串避免截断
df[['A', 'B', 'C']] = df[['A', 'B', 'C']].applymap(str)
display(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:12:35