📅  最后修改于: 2023-12-03 15:37:10.019000             🧑  作者: Mango
在数据分析或数据科学中,合并多个 CSV 文件是一项常见任务。Python 语言拥有强大的库和内置函数,可以轻松实现这一任务。在本文中,我们将介绍如何使用 pandas 库和内置 CSV 模块来合并多个 CSV 文件。
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 表示忽略表格的索引,避免出现重复的索引。
如果您不想使用第三方库,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 模块提供了更多的灵活性和控制。根据您的需求和个人喜好,选择适合您的方法即可。