如何使数据列仅在必要时显示小数?(金额转万单位场景)
解决方法
先完成数值转换,再针对每个值判断是否为整数,仅在必要时保留小数:
基础实现
先计算转换后的数值列:
import pandas as pd # 假设housing是你的DataFrame medianIncome_num = housing['medianIncome'].astype(float) / 10000
然后处理格式,自动去除不必要的小数:
medianIncome1 = medianIncome_num.apply(lambda x: str(int(x)) if x.is_integer() else str(x))
逻辑说明:如果转换后的值是整数(比如15.0),就转成int类型再转字符串,得到"15";如果是小数(比如1.5),直接转字符串保留小数部分。
处理浮点数精度问题
由于浮点数运算可能存在精度误差(比如150000/10000本应是15.0,但可能出现15.0000000001或14.9999999999的情况),可以加入精度判断优化:
medianIncome1 = medianIncome_num.apply( lambda x: str(int(round(x, 2))) if abs(x - round(x, 2)) < 1e-6 else str(round(x, 1)) )
这里先将数值四舍五入到2位小数,判断是否接近整数,是则转成整数字符串,否则保留1位小数(符合你示例中的1.5格式)。
简洁格式化写法
也可以用字符串格式化语法,自动去除末尾的无效0:
medianIncome1 = medianIncome_num.apply(lambda x: f"{x}" if not x.is_integer() else f"{int(x)}")
内容的提问来源于stack exchange,提问作者xxlpb
相关产品推荐
相关产品推荐

