如何在DataFrame中将0.70转0.7、1.0转1且不丢失小数?
优化DataFrame数值格式:自动转为整数/保留有效小数
你需要的是让DataFrame中的数值自动以最简形式呈现——整数型浮点数(如1.0、0.0)转为整数,非整数型浮点数(如0.70、0.75)保留有效小数,同时避免直接转int导致的精度丢失。以下是两种实用方案:
方案一:修改数据本身,实现混合类型存储
通过自定义函数判断每个数值是否为整数,是则转为int,否则保留原float。这种方式会直接改变数据的存储类型(列类型变为object),适合需要导出或存储为最简数值的场景:
import pandas as pd df = pd.DataFrame([0.70,1.0,0.75,0.0,5.0], columns=['pitch']) # 定义处理函数 def simplify_value(x): return int(x) if x == int(x) else x # 应用到目标列 df['pitch'] = df['pitch'].apply(simplify_value)
处理后df['pitch']的结果为:[0.7, 1, 0.75, 0, 5],满足需求。
方案二:仅调整显示格式,保持底层数值类型
如果不需要修改数据存储,只是希望显示时自动呈现最简形式,可以通过设置pandas的显示选项实现。这种方式底层数据仍为float类型,不影响后续数值计算:
import pandas as pd df = pd.DataFrame([0.70,1.0,0.75,0.0,5.0], columns=['pitch']) # 设置显示格式:整数显示为整数,小数保留原有形式 pd.set_option('display.float_format', lambda x: '%d' % x if x.is_integer() else x)
此时查看DataFrame,整数型浮点数会显示为整数,小数则保留原有有效位,底层数据类型仍为float。
内容的提问来源于stack exchange,提问作者M.pillow
相关产品推荐
相关产品推荐

