【发布时间】:2016-04-04 00:10:43
【问题描述】:
我有一个包含文件夹的目录,每个文件夹内大约有 20 个 CSV 文件,每个文件都有不同的文件名;文件包含 A、B、C、D、E 列,每列包含数字数据(一些条目是 NaN)。我想要的是每个文件名都是字典的名称,其中 A、B、C、D、E 是该字典中的键,下面的数据是这些键的值。
举个例子:
A B C D E
0 3 6 1 6
1 6 1 0 5
3 4 9 8 5
7 6 4 0 9
如果重要的话,这些列中的数字不是必需的。
我想我想出了如何使用 for 循环将 dict 名称设置为文件名,即:
rootDir = 'path'
for dirName, subdirList, fileList in os.walk(rootDir, topdown=False):
for fname in FileList
fname = {} #I think this makes each dictionary have the same name as the file
我找到了一种使用 http://pythoncentral.io/how-to-traverse-a-directory-tree-in-python-guide-to-os-walk/ 读取 csvs 值的方法
也就是说,
filepath = os.path.join(rootDir, dirName, fname)
var = pd.read_csv(filepath, na_values=str) #reads in NaN values
理想情况下,这将一次读取一个 CSV。
但我不确定这对我有什么帮助。我查看了 pandas Dataframe.to_dict() 但我认为上面的代码没有读入数据框(或者,如果是,我对文档的理解不够好)。看起来它一次只能为每个键存储一个值。我正在阅读的另一个线程说,虽然(使用 .append() )每个键可以存储多个值,但我不知道如何将其应用于这种情况。
感谢您的帮助,谢谢
【问题讨论】:
标签: python csv dictionary pandas