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

如何格式化pandas表格中含浮点数列的单元格数值?

Pandas单元格存浮点数列表时的数值格式化方案

当你的Pandas DataFrame单元格里是浮点数列表,而非单个浮点数时,常规的pd.set_option('float_format', ...)这类全局设置根本不管用——就像你给出的例子:

import pandas as pd
df = pd.DataFrame(data={'Values':[[0.1231245678,0,0],[1e-10,0,0]]})
df

要把列表里的数值统一改成%.2f格式,最终显示成[0.12, 0.00, 0.00]和[0.00, 0.00, 0.00],可以用下面两种方法:

方法1:直接修改数据列(永久格式化)

用apply遍历目标列的每个列表,逐个格式化里面的浮点数,重新生成列表:

import pandas as pd

df = pd.DataFrame(data={'Values':[[0.1231245678,0,0],[1e-10,0,0]]})

# 把每个浮点数格式化为带两位小数的字符串,组成新列表
df['Values'] = df['Values'].apply(lambda lst: [f"{num:.2f}" for num in lst])

# 如果需要保留数值类型(不是字符串),可以格式化后转回浮点数
# df['Values'] = df['Values'].apply(lambda lst: [float(f"{num:.2f}") for num in lst])

print(df)

运行后输出就是你要的效果:

Values
0  [0.12, 0.00, 0.00]
1  [0.00, 0.00, 0.00]

方法2:仅修改显示样式(不改动原始数据)

要是不想碰原始数据,只是希望查看时显示格式化后的效果,用Pandas的Styler自定义显示规则:

import pandas as pd

df = pd.DataFrame(data={'Values':[[0.1231245678,0,0],[1e-10,0,0]]})

def format_list_elements(val):
    # 判断是否是列表,是的话逐个格式化
    if isinstance(val, list):
        return [f"{num:.2f}" for num in val]
    return val

# 应用样式到整个DataFrame
styled_df = df.style.applymap(format_list_elements)
styled_df

这样原始数据还是原来的浮点数列表,只是显示的时候变成了两位小数的格式。

为啥常规设置没用?

因为pd.set_option('float_format')和display.chop_threshold都是针对单个浮点数单元格的规则,当单元格是列表这种复合类型时,Pandas不会自动遍历列表内部元素去应用格式化,必须手动处理每个列表里的数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 02:23:16