如何用Python合并目录下所有CSV并添加CSV文件名作为列
解决方案:合并CSV并添加来源文件名列
嘿,这事儿用Python的pandas库就能轻松搞定,我给你写个完整的可运行代码,步骤清晰还加了注释,直接用就行!
步骤说明
- 导入必要的库:
pandas用来处理CSV数据,os用来遍历文件夹里的文件 - 设置目标文件夹路径,遍历所有CSV文件
- 逐个读取CSV,新增
challenge列存储当前文件名 - 把所有文件的数据合并到一个DataFrame里
- 导出成最终的
all_entrants.csv
完整代码
import pandas as pd import os # 你的CSV文件夹路径 folder_path = "Downloads/challenges" # 用来存储所有文件的数据 all_entrants_data = [] # 遍历文件夹中的所有文件 for filename in os.listdir(folder_path): # 只处理CSV格式的文件,避免其他文件干扰 if filename.lower().endswith(".csv"): # 拼接完整的文件路径(跨平台兼容,Windows/macOS/Linux都能用) full_file_path = os.path.join(folder_path, filename) # 读取当前CSV文件 df = pd.read_csv(full_file_path) # 新增challenge列,值为当前文件名 df["challenge"] = filename # 将当前文件的数据添加到列表中 all_entrants_data.append(df) # 合并所有DataFrame,ignore_index=True重置索引,避免不同文件的索引重复 combined_df = pd.concat(all_entrants_data, ignore_index=True) # 导出合并后的文件,index=False不保存索引列 combined_df.to_csv("all_entrants.csv", index=False)
注意事项
- 确保你已经安装了pandas:如果没装,运行
pip install pandas就行 - 所有CSV文件的列结构一致(你说50+相同列,完全没问题),如果有个别文件列不一样,pandas会自动给缺失的列补
NaN,不影响合并 - 路径问题:如果你的
Downloads是系统默认下载文件夹,在Windows上可能需要写成C:/Users/你的用户名/Downloads/challenges,或者用原始字符串r"C:\Users\你的用户名\Downloads\challenges"
内容的提问来源于stack exchange,提问作者samthebrand
相关产品推荐
相关产品推荐

