Python(Jupyter/Colab)中pandas浮点列转字符串如何去除.0后缀
pandas浮点列转字符串去除末尾.0后缀方案
问题根因
浮点类型数值直接调用astype(str)时,会输出浮点数的完整字符串表示,即使小数位为0也会保留.0后缀,不符合地址字段需要整数形式字符串的要求。
可行方案
根据列中是否存在缺失值,选择对应方案即可:
- 无缺失值场景
先将浮点列转换为整数类型,再转换为字符串,从根源上避免小数位出现:df4['ileads_address'] = df4['ileads_address'].astype(int).astype(str) - 存在NaN缺失值场景
使用pandas支持空值的Int64类型(注意首字母大写)作为中间转换类型,兼容空值存储的同时不会保留.0后缀:
该方案转换后,原NaN值会转为字符串df4['ileads_address'] = df4['ileads_address'].astype('Int64').astype(str)<NA>,如果需要将空值显示为空字符串,可以追加替换逻辑:df4['ileads_address'] = df4['ileads_address'].replace('<NA>', '') - 快速兜底方案(确认全量值小数位均为0时使用)
直接对转换后的字符串做正则替换,移除末尾的.0后缀,无需处理类型转换的兼容问题:df4['ileads_address'] = df4['ileads_address'].astype(str).str.replace(r'\.0$', '', regex=True)
注意:兜底方案存在误截断风险,如果列中存在如
123.45这类小数位非0的值,会被错误截断为123,非特殊场景优先选择前两种类型转换方案。
内容的提问来源于stack exchange,提问作者jacksojo
相关产品推荐
相关产品推荐

