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

Pandas比较不同CSV两列遇TypeError及nan、列名异常问题

解决爬虫断点续爬的TypeError与异常值问题

看起来你遇到的问题主要来自两个方面:CSV读取时的表头混入数据、列中缺失值(nan)导致的类型不匹配,我来一步步帮你拆解和修复:

问题根源分析

  1. 为什么出现[nan, 'lien']?

    • 'lien'这个值大概率是读取CSV时误把表头当成了数据行。比如当你初始化空DataFrame后,可能错误地将待爬CSV的表头作为数据行读入,或者pd.read_csv的参数设置错误(比如误用了header=None),导致第一行表头被当作普通数据。
    • nan则是因为你的'lien'列存在缺失值,pandas会把空值标记为nan(float类型),当你把列转成列表时,这些nan会被保留下来。
  2. TypeError报错的原因
    后续代码中你可能尝试把这些nan(float类型)和字符串进行拼接操作,Python不允许不同类型直接拼接,所以抛出了can only concatenate str (not "float") to str的错误。

修复方案与优化代码

我会针对你的需求重新编写逻辑,解决上述问题:

1. 核心优化点

  • 严格区分CSV的表头和数据行,避免表头混入数据
  • 提前过滤nan值,确保所有链接都是字符串类型
  • 调整断点续爬的逻辑:从待爬列表中排除已爬取的链接(比对称差集更符合断点续爬的实际需求)

2. 完整修复代码

import pandas as pd
import os

def get_unscraped_links(scraped_csv, to_scrape_csv):
    # 初始化已爬取链接集合
    scraped_links = set()
    
    # 检查已爬取CSV是否存在
    if os.path.exists(scraped_csv):
        scraped_df = pd.read_csv(scraped_csv)
        # 提取'lien'列,过滤空值并转为字符串,再转成集合(方便快速查找)
        scraped_links = set(scraped_df['lien'].dropna().astype(str))
    
    # 读取待爬取的CSV
    to_scrape_df = pd.read_csv(to_scrape_csv)
    # 提取有效链接:过滤空值、转为字符串、排除误读的表头值
    raw_links = to_scrape_df['lien'].dropna().astype(str).tolist()
    valid_to_scrape = [link for link in raw_links if link != 'lien']
    
    # 筛选出未爬取的链接
    unscraped_links = [link for link in valid_to_scrape if link not in scraped_links]
    return unscraped_links

# 调用示例(替换成你的实际文件路径)
listeLiens = get_unscraped_links('dataset/infos.csv', 'your_to_scrape_file.csv')
print(listeLiens)

额外说明

  • 如果你的对称差集逻辑是故意设计的(比如需要找出两个列表中独有的链接),可以把最后一步改成:
    # 对称差集逻辑(保留两个列表各自独有的元素)
    unscraped_links = list(set(valid_to_scrape).symmetric_difference(scraped_links))
    
  • 后续爬取时,记得把新爬取的链接追加到dataset/infos.csv时,不要重复写入表头,可以用mode='a', header=False参数:
    new_links_df.to_csv('dataset/infos.csv', mode='a', header=False, index=False)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:21:30