You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何清洗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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:30:04