如何将DataFrame所有float64列批量转为int64以去除小数?
批量将DataFrame浮点列转为int类型
方法1:无缺失值场景下的直接转换
你的代码逻辑本身是可行的,若执行后未达预期,大概率是环境显示缓存或实际数据存在特殊情况导致。针对无缺失值的浮点列,可直接筛选类型后批量转换:
import pandas as pd data = {'sand depth': [52.0, 22.0], 'ground depth': [45.0, 84.0]} df = pd.DataFrame(data) # 筛选所有浮点类型列 float_cols = df.select_dtypes(include=['float64']).columns # 批量转为int64类型 df[float_cols] = df[float_cols].astype('int64') # 查看转换后的数据类型 print(df.dtypes)
执行后输出的类型信息为:
sand depth int64 ground depth int64 dtype: object
数据将以整数形式展示(如52而非52.0)。
方法2:含缺失值场景下的兼容转换
如果数据中存在NaN,直接用astype(int)会报错,此时可使用支持缺失值的Int64(大写I)类型:
float_cols = df.select_dtypes(include=['float64']).columns df[float_cols] = df[float_cols].astype('Int64')
转换后缺失值会显示为<NA>,有效数据保持整数格式。
方法3:仅优化显示(不修改数据类型)
若无需改变数据类型,只是不想显示小数,可设置pandas的显示格式:
pd.options.display.float_format = '{:.0f}'.format
此设置会让所有浮点列以整数形式展示,但数据类型仍为float64,适合仅优化展示的场景。
内容的提问来源于stack exchange,提问作者Deke Marquardt
相关产品推荐
相关产品推荐

