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
相关产品推荐
相关产品推荐

