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

如何去除Pandas DataFrame中float64序列末尾的.0且不转为科学计数法

Pandas移除float64类型数值末尾.0后缀的可行方案

前置说明

你之前遇到的cannot use this on series报错,是因为直接对Series对象使用Python内置的格式化方法导致,需要使用pandas提供的逐元素处理接口实现需求。以下方案均不会触发科学计数法转换。

方案1:保留数值类型(推荐)

适合需要保留数值属性的场景,整数自动转为整数类型,带小数的数值保留float类型:

  1. 若目标列所有值均为整数(仅存储为float64格式):
# 无空值时使用int64,有空值兼容用Int64
df['目标列名'] = df['目标列名'].astype('Int64')
  1. 若目标列同时存在整数值(带.0后缀)和带小数的浮点数:
import pandas as pd

def remove_trailing_dot0(x):
    if pd.isna(x):
        return x
    return int(x) if x == int(x) else x

# 单列处理
df['目标列名'] = df['目标列名'].apply(remove_trailing_dot0)
# 全表所有列处理
df = df.applymap(remove_trailing_dot0)

方案2:转换为字符串类型

适合需要统一输出为文本格式的场景,完全避免科学计数法:

# 可根据实际最大小数位数调整`.10f`里的数字,只要大于你的最大小数位数即可
df['目标列名'] = df['目标列名'].apply(
    lambda x: f"{x:.10f}".rstrip('0').rstrip('.') if pd.notna(x) else x
)

注意事项

  • 不要使用{:g}格式符,数值超过阈值时会自动转换为科学计数法,不符合你的需求
  • 逐元素处理必须使用apply(单列)、applymap(全表)接口,不可直接对Series使用Python内置格式化方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:30:00