Python使用pandas和csv向文件写入或追加数据的完整指南

云舒
云舒
发布时间:2026-10-11| 3人浏览过
原创

在Python数据分析与自动化流程中,经常需要向CSV文件批量写入或增量追加数据。本文演示如何使用pandas库的标准接口与内置csv模块,准确控制写入模式、表头显示与索引参数,并提供按行追加、追加列的可靠实现方案及避坑指南。

使用 pandas 写入与追加数据

pandas 是处理结构化数据的主流库。通过 DataFrame.to_csv() 方法,可以灵活控制写入行为。追加模式的核心在于正确组合 mode、header 与 index 参数。

第1步:准备数据结构并确认参数

无论原始数据是字典还是嵌套列表,需先转换为 pd.DataFrame。追加至已有文件时,必须关闭自动添加的列名与行索引,避免重复输出表头:

import pandas as pd

# 方式A:使用字典构造
a_dict = {
    "姓名": ['张三', '李四'],
    "年龄": [23, 25]
}
df_dict = pd.DataFrame(a_dict)

# 方式B:使用二维列表构造
a_list = [['张三', 23], ['李四', 25]]
df_list = pd.DataFrame(data=a_list, columns=['姓名', '年龄'])

第2步:执行全量写入或追加保存

若目标文件不存在,直接以写模式创建;若需向已存在文件追加新记录,请严格使用追加模式并隐藏表头与索引:

# 首次创建文件并写入(保留表头)
df_dict.to_csv("output_data.csv", mode='w', index=False, encoding='utf-8-sig')

# 向已有文件追加数据(不重复表头,不生成额外行索引)
df_list.to_csv("output_data.csv", mode='a', header=False, index=False)

参数说明:

  • mode='a':追加模式。若文件不存在则自动新建。
  • header=False:追加时不输出列名,防止每追加一次就多一行表头。
  • index=False:禁用自动生成的一列整数索引,保持CSV整洁。
  • encoding='utf-8-sig':推荐参数。生成的CSV可在Excel中直接打开且中文不乱码。

第3步:单行数据快速追加

当仅需插入单条记录时,可构造包含单个元素的Series或一维列表,转为DataFrame后追加:

# 构造单行数据(直接传入一维列表易被解析为多行,建议使用字典包装)
new_row = pd.DataFrame({"姓名": ["王五"], "年龄": [30]})
new_row.to_csv("output_data.csv", mode='a', header=False, index=False, encoding='utf-8-sig')

使用标准 csv 模块写入与追加数据

对于轻量级任务或依赖环境受限的场景,Python内置的 csv 模块是更底层的实现。该模块基于文件对象操作,需注意句柄的及时关闭。

第4步:安全初始化文件并写入表头

使用上下文管理器(with)确保文件读写结束后自动释放资源。写入表头时建议覆盖模式('w'):

import csv

with open('manual_data.csv', 'w', newline='', encoding='utf-8-sig') as f:
    writer = csv.writer(f)
    # 写入表头
    writer.writerow(['姓名', '年龄'])
    print("表头写入完成")

第5步:按批次追加多条记录

追加时使用 'a' 模式,并确保 newline='' 以消除操作系统底层导致的多余空行:

records = [
    ['张三', 23],
    ['李四', 25],
    ['王五', 30]
]

with open('manual_data.csv', 'a', newline='', encoding='utf-8-sig') as f:
    writer = csv.writer(f)
    writer.writerows(records)
    print(f"成功追加 {len(records)} 条数据")

特殊场景:向CSV追加列的逻辑处理

to_csv 原生不支持直接“原地追加列”。常规做法是先读取原表,在内存中合并新列后再整体覆写,或通过追加模式按行对齐写入。

追加列的标准工作流

假设有旧表 old.csv 和新列数据,可依次执行以下步骤:

import pandas as pd

# 1. 读取原始数据
original_df = pd.read_csv("old.csv")

# 2. 创建新列数据并合并
new_col_data = [100, 200, 300]
original_df["新增状态"] = new_col_data

# 3. 将合并后的完整DataFrame回写到文件
original_df.to_csv("old.csv", index=False, encoding='utf-8-sig')

此方法避免了复杂的行号对齐与手动拼接,利用内存中的结构完整性保证数据一致性。

完成判断与注意事项

验证写入或追加是否成功的直观方法:pd.read_csv("文件名.csv") 返回的行列数应与预期一致;使用纯文本编辑器打开可查看换行符是否正常。操作涉及重要业务数据时,建议在修改前备份源文件。pandas 在多次频繁追加时会产生性能损耗,高频写入场景建议累积数据后统一调用 to_csv(mode='a', header=False) 一次性落盘。

以上就是Python利用pandas和csv包向CSV文件写入或追加数据的详细内容,更多关于Python数据处理与文件IO的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。