gpt4 book ai didi

python - 将具有相似名称约定的文件合并到数据框

转载 作者:行者123 更新时间:2023-12-01 08:50:20 25 4
gpt4 key购买 nike

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

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)

关于python - 将具有相似名称约定的文件合并到数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53152892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com