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

DataFrame列转float后出现科学计数法,去除小数点操作无效求助

解决DataFrame转换后出现科学计数法的问题

你之前用replace('.','')无效的原因是:这两列已经是float数值类型,而非字符串,replace方法仅对字符串生效,所以无法改变数值的显示格式。科学计数法是pandas对大数值float类型的默认显示方式,以下是几种可行的解决办法:

方案1:修改显示格式,保留float类型(推荐,不影响后续数值计算)

如果只是不想看到科学计数法,不需要改变数据类型,可以通过设置pandas的显示选项来调整:

全局设置(所有float列统一格式)

import pandas as pd
# 显示为整数,若需要保留小数可改为 {:.2f} 这类格式
pd.set_option('display.float_format', '{:.0f}'.format)

设置后,整个DataFrame的float列都会以指定格式显示,不再使用科学计数法。

仅对指定列设置格式(不影响全局)

适合仅需要调整特定列显示格式的场景,用style.format:

# 对Population和Total Test列设置为整数显示
df1.style.format({'Population': '{:.0f}', 'Total Test': '{:.0f}'})

方案2:转换为整数类型(适合确定数值为整数的场景)

从你的示例数据来看,数值都是整数,可以将列转换为支持缺失值的整数类型(Int64),避免科学计数法:

# Int64类型支持NaN值,若确定无缺失值可直接用int
df1[['Population', 'Total Test']] = df1[['Population', 'Total Test']].astype('Int64')

方案3:转换为字符串类型(适合无需数值计算的场景)

如果不需要对这些列做数值运算,可将其格式化为普通数字字符串:

df1[['Population', 'Total Test']] = df1[['Population', 'Total Test']].apply(
    lambda col: col.apply('{:.0f}'.format)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:03:31