如何将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
相关产品推荐
相关产品推荐

