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

如何在for循环中使用DataFrame.to_csv追加CSV条目?

用Pandas在For循环中实现CSV追加写入

嘿,这个问题我太熟悉了!之前用pandas写循环的时候也踩过覆盖的坑,其实只要调整to_csv()的几个参数就能轻松实现追加,比csv模块更省心。

核心思路

默认情况下,pandas的df.to_csv()会用mode='w'(写入模式),每次都会新建/覆盖文件。要改成追加,只需要设置mode='a',同时还要注意表头只写一次,不然循环里每次追加都会重复表头,导致CSV格式混乱。

具体实现代码

这里给你一个完整的示例,假设你在循环里每次生成一条或一批数据:

import pandas as pd

# 模拟循环中的数据(替换成你自己的数据源)
loop_data = [
    {"姓名": "张三", "年龄": 25},
    {"姓名": "李四", "年龄": 30},
    {"姓名": "王五", "年龄": 28}
]

# 标志位:控制是否写入表头
is_first_write = True

for item in loop_data:
    # 将单条数据转为DataFrame(批量数据同理)
    df = pd.DataFrame([item])
    
    # 关键参数:mode='a'开启追加,header控制表头是否写入
    df.to_csv(
        "output.csv",
        mode="a",
        header=is_first_write,
        index=False,  # 不需要写入索引列的话加上这个
        encoding="utf-8"  # 根据需要设置编码,避免中文乱码
    )
    
    # 第一次写入后,后续循环不再写表头
    is_first_write = False

参数解释

  • mode='a':告诉pandas以追加模式打开文件,而不是覆盖原有内容
  • header=is_first_write:第一次循环时is_first_write为True,写入表头;之后改为False,只追加数据行
  • index=False:避免把pandas的默认索引列写入CSV(如果你的业务不需要索引的话,建议加上)

批量数据的情况

如果你的循环里每次处理的是批量数据(比如一次生成多行的DataFrame),代码逻辑完全一样,只需要把pd.DataFrame([item])换成你生成的批量DataFrame即可,追加逻辑不受影响。

注意事项

如果你的CSV文件在循环开始前已经存在,记得根据需求决定是否保留原有内容:

  • 如果要保留原有内容并继续追加,直接用上述代码即可
  • 如果需要先清空原有内容再开始循环追加,可以在循环前先判断文件是否存在,若存在则删除,或者第一次循环用mode='w',之后切换为mode='a'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:02:01