我有一个包含文件名的列表。我想解析目录并从列表中的每个元素开始读取所有文件,并将其存储在数据框中
例如:
list1=[abc,bcd,def]
目录:
abc1.txt
abc2.txt
abc3.txt
bcd1.txt
bcd2.txt
bcd3.txt
输出应该是这样,以'abc'开头的文件应该在一个pandas数据框中,而以'bcd'开头的文件在其他数据框中等
我的代码:
dfs = []
for exp in expnames:
for files in filenames:
if files.startswith(exp):
dfs.append(pd.read_csv(file_path+files,sep=',',header=None))
big_frame = pd.concat(dfs, ignore_index=True)
答案 0 :(得分:-1)
这将创建一个DataFrames
的字典,其中每个DataFrame
都包含与“表达式”的前三个字母匹配的所有文件(即abc
,def
等。 C。)。字典中的键是相同的三个字母:
# Some dummy data
filenames = ['abcdefghijkl.txt', 'abcdef.txt', 'defghijk.txt']
# List of combination of certain letters
exps = ['abc', 'def', 'ghi', 'jkl']
dataframes = {}
for filename in filenames:
_df = pd.read_csv(filename)
key = exps[exps.index(filename[:3])]
try:
dataframes[key] = pd.concat([dataframes[key], _df], ignore_index=True)
except KeyError:
dataframes[key] = _df
print(dataframes['abc'])
a b c
0 7 8 9
1 10 11 12
2 1 2 3
3 4 5 6
print(dataframes['def'])
a b c
0 7 8 9
1 10 11 12
以上文件的内容为:
abcdefghijkl.txt
a,b,c
7,8,9
10,11,12
abcdef.txt
a,b,c
1,2,3
4,5,6
defghijkl.txt
a,b,c
7,8,9
10,11,12
答案 1 :(得分:-1)
我假设您有一个目录,除了您要阅读的文件之外,还有其他几个文件。
import os
import pandas as pd
dfs = { }
for f in os.listdir(dirname):
for k in list1:
if f.startswith(k):
try:
dfs[k].concat(pd.read_csv(dirname+f, sep=',', header=None))
except KeyError:
dfs[k] = pd.read_csv(dirname+f, sep=',', header=None))