如何合并列表中序列重复的样本文件名 用于CSV平均值结果列命名
实现方案
核心处理逻辑
通过字符串拆分+字典分组即可完成文件名批量聚合,Python实现代码如下:
import glob from collections import defaultdict # 读取目录下所有csv文件,可按需修改匹配规则 csv_files = glob.glob("*.csv") # 按样本标识分组存储重复序号 sample_groups = defaultdict(list) for file_path in csv_files: # 移除.csv后缀得到纯文件名 pure_name = file_path.rsplit(".", 1)[0] # 从右侧拆分1次'-',分离样本标识与重复序号 sample_tag, repeat_str = pure_name.rsplit("-", 1) sample_groups[sample_tag].append(int(repeat_str)) # 生成平均值列名列表 avg_column_names = [] # 加sorted可保证列名按样本编号顺序排列,不需要可去掉 for sample_tag in sorted(sample_groups.keys()): repeat_list = sample_groups[sample_tag] min_repeat = min(repeat_list) max_repeat = max(repeat_list) column_name = f"{sample_tag}_{min_repeat}-{max_repeat}" avg_column_names.append(column_name)
效果验证
以你给出的示例文件01_NoCons-1、01_NoCons-2、01_NoCons-3为例,运行后生成的对应列名就是01_NoCons_1-3,完全匹配需求。如果需要和你已有的合并、求平均逻辑对接,直接取avg_column_names列表作为最终输出的列名即可。
内容的提问来源于stack exchange,提问作者b1llso
相关产品推荐
相关产品推荐

