如何将多个csv文件合并为单个pandas dataframe?
实现方法
首先需要导入依赖库,pandas用于数据处理,glob用于批量匹配文件(glob是Python标准库,无需额外安装):
import pandas as pd import glob
方法1:批量匹配文件(无需手动罗列文件名)
适合文件名有统一规则的场景,直接匹配目标csv文件后批量读取合并:
# 匹配当前文件夹下1.csv到5.csv的所有文件 file_list = glob.glob("./[1-5].csv") # 批量读取后合并 df = pd.concat((pd.read_csv(f) for f in file_list), ignore_index=True)
注意:
ignore_index=True必须添加,否则合并后的DataFrame会保留各个原文件的行索引,出现重复索引值。
方法2:手动指定文件列表
适合文件名固定、需要精确控制合并范围的场景:
# 手动指定要合并的文件 file_list = ["1.csv", "2.csv", "3.csv", "4.csv", "5.csv"] df = pd.concat([pd.read_csv(file) for file in file_list], ignore_index=True)
扩展:添加来源文件标识列
如果后续需要区分每行数据来自哪个原文件,可以在读入时新增标识列:
df_list = [] for file in ["1.csv", "2.csv", "3.csv", "4.csv", "5.csv"]: temp_df = pd.read_csv(file) # 新增列记录当前行所属的原文件 temp_df["source_file"] = file df_list.append(temp_df) df = pd.concat(df_list, ignore_index=True)
常见问题处理
- 若读取文件出现乱码:在
pd.read_csv()中添加encoding参数指定编码,比如encoding="utf-8"或encoding="gbk" - 若文件分隔符不是默认逗号:添加
sep参数指定分隔符,比如sep="\t"对应制表符分隔的文件 - 若文件过大内存不足:可以添加
chunksize参数分批读取后再合并,小体量csv无需此操作。
内容的提问来源于stack exchange,提问作者Don99
相关产品推荐
相关产品推荐

