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

Pandas Dataframe写入CSV时表头重复问题求助

解决循环写入CSV时重复表头的问题

我太懂这种循环写CSV重复表头的糟心感了——爬多页招聘数据,结果CSV里每一页开头都插个表头,后期处理起来还要手动删,简直浪费时间。给你分享两个实用的解决思路,亲测有效:

方法一:先收集所有数据再一次性写入

这种方法适合数据量不算特别大的场景,思路是先把每页爬取到的DataFrame都存到一个列表里,等所有页面爬完后,再合并成一个大的DataFrame,最后一次性写入CSV,这样表头只会出现一次。

代码示例:

import pandas as pd

# 初始化空列表,用来存储每页的DataFrame
df_collection = []
total_pages = 5  # 替换成你实际要爬的总页数

# 循环遍历每一页
for page_num in range(1, total_pages + 1):
    # 这里替换成你的爬虫逻辑,获取当前页的数据并生成DataFrame
    current_page_df = your_scraping_logic(page_num)
    # 将当前页的DataFrame加入列表
    df_collection.append(current_page_df)

# 合并所有DataFrame,ignore_index=True重置索引
final_dataframe = pd.concat(df_collection, ignore_index=True)

# 写入CSV,index=False不保存索引列
final_dataframe.to_csv('recruitment_data.csv', index=False)

注意:如果爬取的数据量极大(比如上万条),这种方法可能会占用较多内存,这时可以试试下面的方法。

方法二:循环时动态控制表头写入

这种方法是在每次写入CSV时,只让第一页写入表头,后续页面以追加模式写入且不写表头。核心是利用mode参数控制写入模式,header参数控制是否写入表头。

代码示例:

import pandas as pd

total_pages = 5  # 替换成实际总页数

for page_num in range(1, total_pages + 1):
    current_page_df = your_scraping_logic(page_num)
    
    # 判断是否是第一页:是则覆盖写入并写表头,否则追加写入且不写表头
    if page_num == 1:
        current_page_df.to_csv('recruitment_data.csv', index=False, mode='w')
    else:
        current_page_df.to_csv('recruitment_data.csv', index=False, mode='a', header=False)

关键提醒:一定要确保每一页爬取生成的DataFrame列名完全一致,否则追加时会出现列错位或者缺失的问题。如果某一页的列名和其他页不一样,要先做列名对齐处理再写入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:11:59