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

使用df.isin过滤DataFrame返回空列表的原因排查

排查筛选返回空DataFrame的原因

以下是几种最可能导致匹配失败的原因及对应的验证、解决方法:

1. 数据类型不匹配

  • 核心问题:你生成的prod_data列表元素是字符串类型(如'3914'),但爬取得到的DataFrame中Certificate_Number列可能是整数类型,类型不一致会导致isin完全匹配失败。
  • 验证方式:在get_cmvp_data函数中添加代码查看类型:
    print("Certificate_Number列类型:", df['Certificate_Number'].dtype)
    print("prod_data元素类型:", type(prod_data[0]))
    
  • 解决方法:统一两边数据类型二选一即可:
    # 方案1:把prod_data转为整数列表
    prod_data = [int(num) for num in prod_data]
    # 方案2:把DataFrame列转为字符串
    df['Certificate_Number'] = df['Certificate_Number'].astype(str)
    

2. 隐藏特殊字符/空格干扰

  • 核心问题:从Excel读取的编号可能带有全角空格、零宽空格等不可见字符,或网页爬取的证书编号前后有空格,导致表面相同的字符串实际不相等。
  • 验证方式:用repr()打印原始内容,查看隐藏字符:
    # 检查prod_data的原始内容
    for num in prod_data[:5]:
        print(repr(num))
    # 检查DataFrame列的原始内容
    print(df['Certificate_Number'].apply(repr).head())
    
  • 解决方法:对两边数据做彻底清洗:
    # 清洗prod_data
    prod_data = [str(num).strip().replace('\u200b', '') for num in prod_data]
    # 清洗DataFrame列
    df['Certificate_Number'] = df['Certificate_Number'].astype(str).str.strip().replace('\u200b', '', regex=True)
    

3. 网页表格解析异常

  • 核心问题:爬取的网页表格中,Certificate_Number列可能带有前缀(如CMVP-3914),或解析时出现多行合并、格式错乱,导致实际内容和你预期的纯数字不符。
  • 验证方式:直接打印列的前10条数据,确认格式:
    print(df['Certificate_Number'].head(10))
    
  • 解决方法:如果有前缀,提取纯数字部分:
    df['Certificate_Number'] = df['Certificate_Number'].str.extract(r'(\d+)').astype(str)
    

4. Excel读取的格式问题

  • 核心问题:读取Excel时,header=4可能导致列名识别错误,或CMVP #列被读取为浮点数(如3914.0),转字符串后带有.0后缀,导致匹配失败。
  • 验证方式:打印Excel读取后的中间结果:
    print(drop_na['CMVP #'].head())
    print(rmv_excess_chars[:5])
    
  • 解决方法:读取时指定列类型,或清洗时去掉小数部分:
    # 方案1:读取Excel时指定列类型为字符串
    prod_cmvp_data = pd.read_excel('_Request ID__Client Cryptographic Module List Template.xlsx', header=4, dtype={'CMVP #': str})
    # 方案2:清洗时去掉小数后缀
    rmv_excess_chars = [str(item).strip('# ').split('.')[0] for item in to_list]
    

内容的提问来源于stack exchange,提问作者Mitchell Privett

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:15:41