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

如何在Pandas中去除多余.0并将浮点列转换为字符串?

解决你的两个Pandas数据处理问题

问题1:移除Pandas中不需要的.0

这个问题得分两种场景处理,要看你是只想优化显示效果,还是要修改实际的数据类型:

场景1:仅优化显示(不改变数据类型)

如果只是不想在输出时看到.0,但数据本身还是要保留数值型,可以用Pandas的显示选项做针对性设置:

pd.set_option('display.float_format', lambda x: f'{x:.0f}' if x.is_integer() else f'{x}')

这个lambda函数会自动判断数值是否为整数,是整数就显示成无小数格式,非整数则保留原小数位,比强制统一转整数更灵活。

场景2:修改数据类型为整数(彻底去掉.0)

如果你的数据本质就是整数,只是读取时因空值或格式问题变成了浮点型,可以直接转换类型:

# 无空值的情况
df['目标列'] = df['目标列'].astype(int)

# 有空值的情况,用支持空值的Int64类型(注意大写I)
df['目标列'] = df['目标列'].astype('Int64')

问题2:将浮点型列转换为实际字符串(解决科学计数法+转列表失效问题)

你之前用pd.set_option只是改了显示样式,实际数据还是浮点型,所以转列表时会打回原形。要真正转成字符串,得直接操作数据本身:

方法1:先转整数再转字符串(适合无精度丢失的大整数)

你的数据是类似1.04983E+13的大整数,先转整数再转字符串不会有精度问题:

# 假设列中无空值,有空值可先用fillna处理或改用Int64类型
sample_df['gpid'] = sample_df['gpid'].astype(int).astype(str)

# 现在转列表就是纯字符串格式了
gpid_list = sample_df['gpid'].tolist()

方法2:直接格式化字符串(避免超大数精度丢失)

如果是极端超大的浮点数,转整数可能出现精度损失,这时候直接用字符串格式化更稳妥:

# 用%格式化
sample_df['gpid'] = sample_df['gpid'].apply(lambda x: '%.0f' % x)

# 或者用更直观的f-string
sample_df['gpid'] = sample_df['gpid'].apply(lambda x: f'{x:.0f}')

验证效果

现在再查看列数据或转列表,得到的就是纯字符串的完整数字:

print(sample_df['gpid'].tolist())
# 输出示例:['10498310800133', '767838527881217']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:21:47