如何迭代两个文件夹下的对应CSV文件并完成配对计算
解决方案
可行性说明
该需求完全可以实现,无需依赖特殊工具包,常规Python数据处理栈即可覆盖所有需求场景。
所需工具包
- Python标准库
pathlib/os:用于文件路径遍历、文件名规则匹配,不需要额外安装 pandas:用于CSV文件读取、数值统计计算,如果计算逻辑非常简单也可以用标准库csv模块减少第三方依赖
实现逻辑
- 分别遍历两个文件夹下符合命名规则的CSV文件,提取文件名中的公共前缀(即
x_x部分)作为配对唯一标识 - 分别建立两个文件夹的「公共前缀-文件完整路径」映射字典
- 取两个字典的key交集作为可正常配对的文件集合,避免单个文件夹缺失对应文件导致运行报错
- 遍历所有配对标识,依次读取对应CSV文件执行自定义计算,将结果存入结果列表即可
示例代码
from pathlib import Path import pandas as pd # 替换为实际的文件夹路径 DIR_A = Path("文件夹A的绝对/相对路径") DIR_B = Path("文件夹B的绝对/相对路径") # 构建A文件夹的前缀映射表 file_map_a = {} for csv_file in DIR_A.glob("*_Alpha.csv"): # 提取公共前缀:1_1_Alpha.csv分割后取前两段拼接为1_1 prefix = "_".join(csv_file.stem.split("_")[:2]) file_map_a[prefix] = csv_file # 构建B文件夹的前缀映射表 file_map_b = {} for csv_file in DIR_B.glob("*_Beta.csv"): prefix = "_".join(csv_file.stem.split("_")[:2]) file_map_b[prefix] = csv_file # 取两边都存在的前缀,过滤掉无法配对的文件 common_prefixes = set(file_map_a.keys()) & set(file_map_b.keys()) result_list = [] for prefix in common_prefixes: # 读取配对的两个CSV文件 df_a = pd.read_csv(file_map_a[prefix]) df_b = pd.read_csv(file_map_b[prefix]) # 替换为你自己的统计计算逻辑,示例为两表数值列均值求和 stat_result = df_a.mean(numeric_only=True).sum() + df_b.mean(numeric_only=True).sum() # 存入结果列表,可保留前缀方便后续追溯对应文件 result_list.append({"file_prefix": prefix, "stat_value": stat_result}) # 后续可按需将result_list转为DataFrame导出或直接使用 print(result_list)
注意事项
- 如果文件名前缀规则不是两段下划线拼接,可调整
split的参数和截取规则,只要能提取到两个配对文件共有的唯一标识即可 - 900对文件的处理量极小,不会有性能问题,不需要做并行优化
- 可按需添加异常捕获逻辑,处理CSV读取失败、计算报错的场景,避免程序中途中断
内容的提问来源于stack exchange,提问作者Hashriama
相关产品推荐
相关产品推荐

