Python合并两个CSV文件

CSV(Comma Separated Values)是一种常见的文本文件格式,用于存储结构化的数据。在实际应用中,我们经常会遇到需要将多个CSV文件合并成一个的情况,本文将介绍如何使用Python来实现这个功能。

1. CSV文件的基本概念

CSV文件是一种以纯文本形式存储表格数据的文件。每一行表示表格中的一条记录,每一列用逗号(或其他分隔符)来分隔不同的字段。CSV文件没有规定特定的文件扩展名,常用的有.csv和.txt。

例如,下面是一个简单的CSV文件示例:

Name,Age,City
John,25,New York
Lisa,30,San Francisco

2. 使用Python读取CSV文件

在Python中,有多种方式可以读取和处理CSV文件,常用的有csv模块和pandas库。以下是使用csv模块读取CSV文件的示例代码:

import csv

filename = "data.csv"

with open(filename, "r") as file:
    reader = csv.reader(file)
    header = next(reader)  # 读取首行,即表头
    data = [row for row in reader]  # 读取数据

print("表头:", header)
print("数据:", data)

上述代码中,我们首先打开CSV文件,并创建一个csv.reader对象来读取文件内容。通过调用next()函数,我们可以读取首行,即表头;通过遍历reader对象,我们可以读取数据部分。

3. 合并CSV文件

合并两个CSV文件的基本思路是将两个文件的数据合并到一个新的文件中。下面是一个简单的示例代码,演示了如何将两个CSV文件合并成一个新的文件:

import csv

filename1 = "data1.csv"
filename2 = "data2.csv"
output_file = "merged_data.csv"

# 读取第一个CSV文件
with open(filename1, "r") as file:
    reader = csv.reader(file)
    header1 = next(reader)
    data1 = [row for row in reader]

# 读取第二个CSV文件
with open(filename2, "r") as file:
    reader = csv.reader(file)
    header2 = next(reader)
    data2 = [row for row in reader]

# 合并数据
merged_data = [header1] + data1 + data2

# 写入新的CSV文件
with open(output_file, "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerows(merged_data)

print("合并完成!")

在上述代码中,我们首先分别读取两个CSV文件的表头和数据。然后,我们将两个数据部分合并到一个新的列表merged_data中,其中包括了两个表头和所有数据。最后,我们使用csv.writer对象将合并后的数据写入到新的CSV文件中。

4. 补充说明

  • 上述示例代码仅适用于CSV文件的表头和数据结构相同的情况。如果两个文件的结构不同,需要根据实际情况进行相应的处理。
  • CSV文件可以包含复杂的数据类型,例如日期、时间、字符串等。在读取和处理CSV文件时,需要根据实际情况进行数据类型转换。

5. 总结

本文介绍了如何使用Python合并两个CSV文件的方法。通过使用csv模块,我们可以方便地读取和处理CSV文件,通过将两个文件的数据合并到一个新的文件中,实现了合并的功能。在实际应用中,我们可以根据具体需求进行相应的扩展和优化。

stateDiagram
    [*] --> 读取文件1
    读取文件1 --> 读取文件2
    读取文件2 --> 合并数据
    合并数据 --> 写入文件
    写入文件 --> [*]

参考资料:

  • [Python CSV 文件处理指南](
  • [Python CSV Module](
  • [Pandas: Python Data Analysis Library](