我有一个存储在目录中的文件列表,例如
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)