📜  合并多个 csv 文件 - Python (1)

📅  最后修改于: 2023-12-03 15:37:10.019000             🧑  作者: Mango

合并多个 CSV 文件 - Python

在数据分析或数据科学中,合并多个 CSV 文件是一项常见任务。Python 语言拥有强大的库和内置函数,可以轻松实现这一任务。在本文中,我们将介绍如何使用 pandas 库和内置 CSV 模块来合并多个 CSV 文件。

使用 pandas 库

Pandas 是一个高效的数据处理库,支持多种数据格式,包括 CSV、Excel、SQL 数据库等。使用 pandas 库,我们可以读取、处理、合并 CSV 文件非常容易。

下面是一个例子,使用 pandas 库将多个 CSV 文件合并为单个文件:

import pandas as pd
import glob

path = r'./data/'  # CSV 文件路径
all_files = glob.glob(path + '/*.csv')

li = []
for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

df = pd.concat(li, axis=0, ignore_index=True)

df.to_csv('merged.csv', index=False)

在这个例子中,我们使用 glob 来查找指定文件夹中的所有 CSV 文件,然后使用 pandas 的 read_csv 读取每个文件。最后使用 concat 函数将它们合并为单个 DataFrame。

注意,axis=0 表示按行合并,ignore_index=True 表示忽略表格的索引,避免出现重复的索引。

使用内置 CSV 模块

如果您不想使用第三方库,Python 的内置 CSV 模块是一个很好的选择。下面是一个例子,使用内置 CSV 模块将多个 CSV 文件合并为单个文件:

import csv
import os

path = r'./data/'  # CSV 文件路径
all_files = os.listdir(path)

with open('merged.csv', mode='w', newline='') as f:
    writer = csv.writer(f)
    for filename in all_files:
        if filename.endswith('.csv'):
            with open(os.path.join(path, filename), mode='r') as csvfile:
                reader = csv.reader(csvfile)
                if filename == all_files[0]:
                    header = next(reader)
                    writer.writerow(header)
                for row in reader:
                    writer.writerow(row)

在这个例子中,我们使用 os.listdir 来查找指定文件夹中的所有文件,然后使用内置的 CSV 模块来读取每个 CSV 文件,并将它们写入一个包含所有行的新 CSV 文件中。

注意,在第一个 CSV 文件中写入表头,然后跳过表头继续写入其余行。

结论

无论您使用 pandas 还是内置 CSV 模块,将多个 CSV 文件合并为单个文件都不是问题。Pandas 提供了一个更简洁的方法,而内置 CSV 模块提供了更多的灵活性和控制。根据您的需求和个人喜好,选择适合您的方法即可。