You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于列表元素匹配文件名并将内容追加至DataFrame的实现方案

嘿,我来帮你搞定这个问题!你的思路方向是对的,但现有代码里有几个小坑(比如每次循环都重置DataFrame、文件名匹配没用到item变量、逐行读取效率低),我来一步步帮你修正并优化:

首先,用glob快速匹配目标文件

处理文件名匹配的话,glob模块比手写正则更简洁高效,它专门用来匹配文件路径。比如要找所有以a_开头的.bed文件,直接用glob.glob("a_*.bed")就行。

完整优化代码

import pandas as pd
import glob

# 你的初始列表
myList = ['a', 'b', 'c']
# 初始化一个列表来存储每个文件的DataFrame(比反复append高效)
dfs = []

for item in myList:
    # 匹配当前item对应的所有.bed文件,比如item='a'时找a_*.bed
    matching_files = glob.glob(f"{item}_*.bed")
    
    for file_path in matching_files:
        # 读取bed文件:bed通常是制表符分隔,若文件有表头可去掉header=None
        df_temp = pd.read_table(file_path, sep='\t', header=None)
        # 可选:添加一列记录数据来源的文件名,方便后续溯源
        df_temp['source_file'] = file_path
        # 将临时DataFrame加入列表
        dfs.append(df_temp)

# 合并所有临时DataFrame成一个大表
final_df = pd.concat(dfs, ignore_index=True)

代码说明

  • 文件匹配:glob.glob(f"{item}_*.bed")会自动找出当前目录下所有以{item}_开头、.bed结尾的文件,完全符合你的需求。
  • 高效读取:用pd.read_table()直接读取整个文件,比逐行读取+手动append高效太多,还能自动处理bed文件的制表符分隔格式。
  • 合并方式:先把每个文件的DataFrame存入列表,最后用pd.concat()合并——这是Pandas官方推荐的方式,因为旧的df.append()已经被弃用了。
  • 溯源列:添加source_file列是个小技巧,能帮你后续快速知道每条数据来自哪个文件,排查问题很方便。

如果你确实需要用正则的情况

如果你的文件名规则更复杂(比如需要匹配特定格式的数字后缀),可以用re模块配合os来过滤文件:

import pandas as pd
import os
import re

myList = ['a', 'b', 'c']
dfs = []
folder_path = "./your_folder"  # 替换成你的文件夹路径

# 获取文件夹里所有.bed文件
all_bed_files = [f for f in os.listdir(folder_path) if f.endswith('.bed')]

for item in myList:
    # 正则规则:以item开头,下划线,然后任意数字,最后.bed
    pattern = re.compile(f"^{item}_[0-9]+\.bed$")
    # 筛选符合规则的文件,拼接完整路径
    matching_files = [os.path.join(folder_path, f) for f in all_bed_files if pattern.match(f)]
    
    for file_path in matching_files:
        df_temp = pd.read_table(file_path, sep='\t', header=None)
        df_temp['source_file'] = file_path
        dfs.append(df_temp)

final_df = pd.concat(dfs, ignore_index=True)

这个正则^${item}_[0-9]+\.bed$会严格匹配item+下划线+纯数字+.bed的文件,比如a_3432.bed会匹配,a_abc.bed就不会,适合更精准的场景。

内容的提问来源于stack exchange,提问作者Liquidity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:05:25