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

如何将Pandas DataFrame混合浮点整数列转为Object类型并去除.0

解决Pandas DataFrame列混合数值类型显示问题

问题分析

你的代码逻辑本身没问题,但可能是Pandas的显示格式设置导致整数型数值仍被显示为带.00的格式,或者浮点数精度判断存在潜在问题。下面提供两种可靠的解决方案,分别对应保留混合数值类型和转换为字符串两种需求。

方案一:保留混合数值类型(int + float)

使用is_integer()更精准判断浮点数是否为整数,同时重置Pandas的显示格式避免强制格式化:

import pandas as pd

# 重置显示格式,避免强制统一小数位数
pd.options.display.float_format = None

data = {'A': [7.62, 5.0, 10.25, 3.0, 8.0]}
df = pd.DataFrame(data)

def format_value(x):
    # 精准判断浮点数是否为整数
    if isinstance(x, float) and x.is_integer():
        return int(x)
    return x

# 应用转换并转为object类型以保留混合类型
df['A'] = df['A'].apply(format_value).astype('object')

print(df)

执行后输出:

A
0  7.62
1     5
2  10.25
3     3
4     8

方案二:转换为字符串(彻底去掉.0)

如果允许将列转为字符串类型,这种方法最直接,完全避免显示格式问题:

import pandas as pd

data = {'A': [7.62, 5.0, 10.25, 3.0, 8.0]}
df = pd.DataFrame(data)

# 整数转字符串(去掉.0),小数保留原格式字符串
df['A'] = df['A'].apply(lambda x: str(int(x)) if x.is_integer() else str(x))

print(df)

执行后输出:

A
0  7.62
1     5
2  10.25
3     3
4     8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:12:36