如何清洗pandas国家数据集,删除含无效值、无法转数值类型的行
完整解决方案
实现逻辑是先全表匹配替换无效值为NaN,批量转换目标列为数值类型,最后删除包含空值的整行记录,代码如下:
import pandas as pd # 1. 定义所有需要识别的无效值,可根据实际情况补充更多异常字符串 invalid_values = ['...', '-99'] # 2. 全表替换无效值为空值 country_df = country_df.replace(invalid_values, pd.NA) # 3. 筛选需要转换为数值类型的列(排除country、Region两个天然字符串类型列) numeric_columns = [col for col in country_df.columns if col not in ['country', 'Region']] # 4. 批量转换数值列,无法转换的内容自动设为空值 country_df[numeric_columns] = country_df[numeric_columns].apply(pd.to_numeric, errors='coerce') # 5. 删除任意列包含空值的整行记录,重置索引 country_df_cleaned = country_df.dropna(axis=0, how='any').reset_index(drop=True)
关键参数说明
errors='coerce':和你之前使用的errors='ignore'不同,该参数会强制将无法转换为数值的内容设置为NaN,不会直接终止转换操作dropna(axis=0, how='any'):axis=0指定按行校验,how='any'表示只要某行存在1个及以上空值就删除整行- 若不需要保留所有列的非空性,可在
dropna方法中通过subset参数指定仅校验部分列
结果验证
执行完上述代码后可通过以下代码查看处理后的数据结构,确认数值列类型是否符合预期:
country_df_cleaned.info()
内容的提问来源于stack exchange,提问作者Anweshan Goswami
相关产品推荐
相关产品推荐

