如何用Python读取多个文件合并为单个dataframe并为各文件添加标识符
多文件读取并添加来源标识拼接方案
方案特性
- 支持任意数量的
.csv/.txt格式文件批量处理 - 自动为每条数据添加所属文件的专属标识列
- 代码可复用性强,仅需修改目录路径参数即可适配不同场景
实现代码
import pandas as pd import os def read_files_with_id(dir_path, sep_map={".csv": ",", ".txt": "|"}): """ 读取指定目录下所有csv/txt文件,添加来源文件id后拼接为单个DataFrame :param dir_path: 存放目标文件的目录路径 :param sep_map: 不同后缀文件对应的分隔符,可按需修改 :return: 合并后的完整DataFrame """ df_list = [] # 遍历目录下所有文件 for filename in os.listdir(dir_path): file_path = os.path.join(dir_path, filename) # 跳过子目录,仅处理文件 if not os.path.isfile(file_path): continue # 获取文件后缀,匹配对应分隔符 file_suffix = os.path.splitext(filename)[1].lower() if file_suffix not in sep_map: continue # 读取文件并添加id列,id可按需修改为文件名/全路径/自定义标识 tmp_df = pd.read_csv(file_path, sep=sep_map[file_suffix]) tmp_df["id"] = os.path.splitext(filename)[0] # 取不带后缀的文件名作为id df_list.append(tmp_df) # 合并所有DataFrame并重置索引 return pd.concat(df_list, ignore_index=True) # 调用示例 if __name__ == "__main__": # 替换为你的目标文件所在目录路径 target_dir = "./your_file_directory" df_all = read_files_with_id(target_dir) print(df_all)
适配说明
- 针对你提供的竖线分隔
.txt文件,默认配置可直接适配,生成的id列值为file1、file2,完全匹配需求 - 若需要调整id生成规则,比如保留文件后缀、使用文件全路径作为标识,只需修改
tmp_df["id"]对应的赋值逻辑即可 - 若需要支持其他后缀格式的分隔类文件,只需在
sep_map参数中新增后缀与分隔符的对应关系即可
内容的提问来源于stack exchange,提问作者tall_table
相关产品推荐
相关产品推荐

