如何将Pandas中科学计数法显示的float类型列转换为整数?
解决浮点数转整数溢出及科学计数法转精确整数问题
问题原因
你的patient_id列是浮点数类型,其中数值(如2.987250e+13)远大于32位整数的最大值(2147483647),直接用astype(int)会触发整数溢出,导致结果出现负数;同时浮点数存储科学计数法数值时可能存在精度损失,直接转整数可能得不到目标精确值。
解决方案
方法一:使用64位整数类型转换
直接指定转换为int64类型,避免32位整数溢出:
med_app['patient_id'] = med_app['patient_id'].astype('int64')
方法二:先转无科学计数法字符串再转整数(更稳妥,避免精度损失)
先将浮点数格式化为不带科学计数法的完整数字字符串,再转换为整数,确保得到精确的目标值:
# 格式化浮点数为无科学计数法的字符串 med_app['patient_id'] = med_app['patient_id'].apply(lambda x: f"{x:.0f}") # 转换为64位整数 med_app['patient_id'] = med_app['patient_id'].astype('int64')
方法三:使用pd.to_numeric指定整数类型
利用pandas的数值转换工具,直接指定目标整数类型:
import pandas as pd med_app['patient_id'] = pd.to_numeric(med_app['patient_id'], dtype='int64')
内容的提问来源于stack exchange,提问作者Jen
相关产品推荐
相关产品推荐

