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

使用Pandas处理含Unknown的空值及字符串转float报错问题

解决Pandas中"Unknown"空值删除与数值列转换问题

你遇到的核心问题是数据集里的空值被存储为字符串"Unknown",而非Pandas默认识别的NaN,所以常规的isnull()、dropna()方法才会失效。另外fine列转float报错,大概率是因为列里还混杂着"Unknown"或者其他非数值格式的内容,咱们一步步来解决:

第一步:删除包含"Unknown"的行

因为所有空值都被替换成了"Unknown"字符串,我们可以通过两种方式清理这些无效行:

方法1:直接筛选排除

# 筛选出所有列中都不等于"Unknown"的行
gdpr_fines_cleaned = gdpr_fines[~gdpr_fines.isin(["Unknown"]).any(axis=1)]

方法2:先转回NaN再删除

# 把所有"Unknown"替换为真正的NaN
gdpr_fines.replace("Unknown", pd.NA, inplace=True)
# 删除包含NaN的行
gdpr_fines_cleaned = gdpr_fines.dropna()

处理完后可以用gdpr_fines_cleaned.info()确认数据量变化,以及各列的非空值数量是否符合预期。

第二步:将fine列转换为数值类型

转float报错的原因,除了残留的"Unknown",还可能是fine列的字符串里包含货币符号(比如€、$)、千位分隔符逗号(比如1,000,000)这类非数值字符,需要先清理再转换:

# 先清理fine列的非数值字符(根据你的实际数据调整符号,这里假设是欧元符号和逗号)
gdpr_fines_cleaned['fine'] = gdpr_fines_cleaned['fine'].str.replace(r'[€,$,]', '', regex=True)
# 转换为float类型
gdpr_fines_cleaned['fine'] = gdpr_fines_cleaned['fine'].astype(float)

如果清理后仍有报错,可以用pd.to_numeric()配合errors='coerce'强制转换,同时把无法转换的值转为NaN(后续可按需处理这些异常值):

gdpr_fines_cleaned['fine'] = pd.to_numeric(gdpr_fines_cleaned['fine'], errors='coerce')

这时可以用gdpr_fines_cleaned['fine'].isnull().sum()查看剩余异常值数量,再决定删除或填充。

验证处理结果

最后用以下代码确认数据是否处理正确:

print(gdpr_fines_cleaned.info())
print(gdpr_fines_cleaned['fine'].head())

内容的提问来源于stack exchange,提问作者Elja Suhonen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:47:52