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

使用FuzzyWuzzy与Pandas处理字符串匹配时遇TypeError求助

问题原因及解决方法

这个错误的核心原因是全量数据集里存在缺失值(NaN)——Pandas中NaN的类型是float,而fuzzywuzzy的匹配函数需要处理字符串类型,当传入float类型的NaN时,函数内部调用len()方法时就会触发TypeError。测试数据集没有缺失值,所以运行正常。

解决步骤

1. 在clean函数中添加类型校验

修改你的clean函数,提前过滤缺失值和非字符串类型:

from fuzzywuzzy import process
import pandas as pd

def clean_string(s, ref_list, threshold=80):
    # 处理缺失值或非字符串输入
    if pd.isna(s) or not isinstance(s, str):
        return s  # 也可以返回空字符串或其他默认值,根据需求调整
    # 正常匹配逻辑
    match_result = process.extractOne(s, ref_list)
    return match_result[0] if match_result[1] >= threshold else s

2. 预处理数据集(可选)

如果不想修改函数,也可以先对目标Series做预处理,统一转成字符串并处理缺失值:

# 将所有值转为字符串,把NaN替换为空字符串
df['your_column'] = df['your_column'].astype(str).replace('nan', '', regex=False)
# 再应用clean函数
df['cleaned_column'] = df['your_column'].apply(clean_string, ref_list=your_reference_list)

3. 验证缺失值

可以先执行以下代码确认全量数据里的缺失值情况:

print(df['your_column'].isna().sum())
print(df['your_column'].apply(type).unique())

这能帮你确认是否存在float类型的NaN或其他非字符串值。

内容的提问来源于stack exchange,提问作者Alejandro L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:30:54