如何导入文件夹下所有CSV文件并按文件名前缀自动分组
实现方案
你当前的代码缺少文件名和对应DataFrame的关联逻辑,调整后可同时满足按前缀分组和新增前缀列的需求,推荐优先用字典存储分组结果,比动态生成大量独立列表变量更易维护:
import os import glob import pandas as pd # 路径前加r防止Windows系统路径转义报错 path1 = r'D:\folder' all_files1 = glob.glob(path1 + "/*.csv") all_files1.sort(key=os.path.getmtime) # 分组存储容器:key为文件名前缀,value为对应4个DataFrame的列表 grouped_df_dict = {} # 可选:全量合并表,已自带前缀列可直接筛选 total_df = pd.DataFrame() for filename in all_files1: # 提取文件名前缀(取下划线前的字符串) file_basename = os.path.basename(filename) file_prefix = file_basename.split("_")[0] # 读取文件并新增前缀列 df = pd.read_csv(filename, index_col=None) df["file_prefix"] = file_prefix # 按前缀分组存入字典 if file_prefix not in grouped_df_dict: grouped_df_dict[file_prefix] = [] grouped_df_dict[file_prefix].append(df) # 可选:合并到全量表 total_df = pd.concat([total_df, df], ignore_index=True)
使用说明
- 要获取前缀为ABC的DataFrame列表,直接调用
grouped_df_dict["ABC"]即可,效果和你需要的LIST_ABC完全一致 - 每个DataFrame都新增了
file_prefix列,后续需要筛选对应前缀数据时,直接对全量表total_df按该列筛选即可,无需单独遍历分组列表 - 如果你确实需要生成
LIST_XXX格式的独立变量,可以追加以下代码(不推荐,字典方案的遍历、检索效率更高):
for prefix, df_list in grouped_df_dict.items(): globals()[f"LIST_{prefix}"] = df_list
内容的提问来源于stack exchange,提问作者the phoenix
相关产品推荐
相关产品推荐

