如何修改pandas多列数据类型并删除无法转换为float的无效行
解决方法
可以通过Pandas的内置函数自动完成批量转换+无效值行过滤,无需逐列手动检查,代码如下:
import pandas as pd # 定义所有需要转换为float64的列 convert_cols = [ "GDP growth rate (annual %, const. 2005 prices)", # 此处补充剩余16个需要转换的列名 ] # 批量转换列类型,无法转换的异常值自动设为NaN country_df[convert_cols] = country_df[convert_cols].apply( pd.to_numeric, errors="coerce", downcast="float" ) # 可选操作:如果你的数据中-99属于占位无效值而非真实数据,可执行这一步将其转为空值 # country_df[convert_cols] = country_df[convert_cols].replace(-99, pd.NA) # 删除所有包含无效值的行,重置索引 country_df = country_df.dropna(subset=convert_cols).reset_index(drop=True)
原理说明
- 核心参数
errors="coerce"会自动将所有无法解析为数字的内容(比如你遇到的-~0.0、...、含特殊字符的异常值)转换为空值NaN,不会抛出转换错误 - 最后通过
dropna过滤掉所有在目标列中存在空值的行,最终保留的行所有目标列都为可正常运算的float64类型
内容的提问来源于stack exchange,提问作者Anweshan Goswami
相关产品推荐
相关产品推荐

