将文件列表循环到字典中;基于字符串

时间:2015-09-15 11:44:54

标签: python csv dictionary pandas filelist

我在库中有一堆.csv文件,我想提取它们的内容(它们是NxM矩阵)并将它们放入字典中。它们都是相同的大小,通常命名为{means1,means2,...}和{trajectories1,trajectories2,...}。

这是我用来获取文件列表的代码

import os
import glob
my_dir = 'insert your own datapath'
filelist = []
os.chdir( my_dir )
for files in glob.glob( "*.csv" ) :
    filelist.append(files)

输出

['means0.csv',
 'means1.csv',
 'means2.csv',
 'trajectories0.csv',
 'trajectories1.csv',
 'trajectories2.csv']

我正在寻找一些

的代码
  1. 提取名称;在这种情况下,“手段”和“轨迹”
  2. 根据每个名称创建一个词典,即means_dict = {}
  3. 使用相关的.csv文件填写dict。例如。最后得到像means_dict['0'] = ('means0.csv')之类的东西。
  4. 希望它有意义!

2 个答案:

答案 0 :(得分:2)

你真的,真的不想动态创建dicts。相反,使用带有键的包含字典作为"表示","轨迹"等,以及作为文件列表的值:

from collections import defaultdict
import re

filedict = defaultdict(list)
for filename in glob.glob( "*.csv" ) :
    result = re.match(r'([^\d]+)', filename)
    if result:
        filedict[result.group(1)].append(filename)

答案 1 :(得分:1)

您可以使用这样的动态字典来完成:

{'test': ['test2.csv', 'test0.csv', 'test1.csv'], 'else': ['else0.csv', 'else1.csv']}

在我自己的测试中给出了这个结果:

SELECT ID, STUDENT, CLASS,
     NVL(CASE WHEN CLASS LIKE '%-%' THEN CLASS END, LAG(CASE WHEN CLASS LIKE '%-%' THEN CLASS END) IGNORE NULLS OVER
           (ORDER BY ID)) as CLASSSTUD
FROM MYTABLE 
ORDER BY ID;