Python 将具有类似名称约定的文件合并到数据帧

Python 将具有类似名称约定的文件合并到数据帧,python,pandas,file,dataframe,Python,Pandas,File,Dataframe,我有一个存储在目录中的文件列表,如 filenames=[ abc_1.txt abc_2.txt abc_3.txt bcd_1.txt bcd_2.txt bcd_3.txt ] pattern=[abc] 我想把多个txt文件读入一个数据框,这样所有以abc开头的文件都会在一个数据框中,然后所有文件名都以bcd开头,等等 我的代码: file_path = '/home/io

我有一个存储在目录中的文件列表,如

filenames=[
        abc_1.txt
        abc_2.txt
        abc_3.txt

        bcd_1.txt
        bcd_2.txt
        bcd_3.txt
       ]

pattern=[abc]
我想把多个txt文件读入一个数据框,这样所有以abc开头的文件都会在一个数据框中,然后所有文件名都以bcd开头,等等

我的代码:

file_path = '/home/iolie/Downloads/test/'
filenames = os.listdir(file_path)


prefixes = list(set(i.split('_')[0] for i in filenames))

for prefix in prefixes:
    print('Reading files with prefix:',prefix)
    for file in filenames: 
        if file.startswith(prefix):
            print('Reading files:',file)
            list_of_dfs = [pd.concat([pd.read_csv(os.path.join(file_path, file), header=None) ],ignore_index=True)]
            final = pd.concat(list_of_dfs)

此代码不附加数据帧,而是覆盖数据帧。有人能帮忙吗

比创建任意数量的未链接数据帧更好的方法是输出数据帧字典,其中键是前缀:

from collections import defaultdict

filenames = ['abc_1.txt', 'abc_2.txt', 'abc_3.txt',
             'bcd_1.txt', 'bcd_2.txt', 'bcd_3.txt']

dd = defaultdict(list)

for fn in filenames:
    dd[fn.split('_')[0]].append(fn)

dict_of_dfs = {}
for k, v in dd.items():
    dict_of_dfs[k] = pd.concat([pd.read_csv(fn) for fn in v], ignore_index=True)

你好,谢谢你的回答。我想进一步执行某些操作,最好在数据帧上执行这些操作。如果可能的话,你能建议我修改原始代码来解决这个问题吗?@Tejassah,当然可以。因此,您的字典值是数据帧。您可以通过操作(例如)
dict\u of_dfs['abc']
对其进行操作。如果您不相信我,请尝试
键入(dict\u of_dfs['abc'])
。可能重复的注释不用于扩展讨论;这段对话已经结束。