在Python中从CSV创建一系列变量?

时间:2018-09-02 15:19:05

标签: python pandas csv dictionary generator

我正在尝试从要导入的CSV创建一系列词典,但是我不确定做到这一点的最佳方法。

我使用了RatingFactors = os.listdir(RatingDirectory)

CSVLocations = [] for factor in RatingFactors: CSVLocations.append(RatingDirectory + factor)

要创建CSV列表,这些CSV实质上包含FactorName | Dictionary的字典。因子值,然后为1 | 5、2 | 3.5。

我想为每个CSV创建一个字典,最好根据CSV名称命名。但是我知道,在变量之间循环时,尝试在循环中命名我的变量被认为是不好的。

我尝试使用df_from_each_file = (pd.read_csv(CSVs) for CSVs in CSVLocations)

创建一个生成器函数

如果我使用for y in df_from_each_file: print(y)打印生成器,它将为我提供每个数据帧,但是我不知道如何将它们分开?

Pythonic的实现方式是什么?

导入后CSV的外观

0         0  1.1
1         1  0.9
2         2  0.9
3         3  0.9
etc

编辑:

试图重述我的问题。

我有一系列CSV,它们的格式像字典一样,有两列,它们代表一个因素与另一个因素的关系。我想为每个CSV制作一个字典,命名为CSV,以便可以从Python与它们进行交互。

编辑2:

我认为这个问题与所提到的问题不同,因为它创建的是一个包含所有词典的数据框,我希望所有词典都分开而不是一个单元。在问这个问题之前,我尝试使用他们的答案,但无法将他们分开。

1 个答案:

答案 0 :(得分:2)

我认为需要dict comprehensionbasename作为密钥:

import glob, os

files = glob.glob('files/*.csv')
sers={os.path.basename(f).split('.')[0]:pd.read_csv(f,index_col=[0]).squeeze() for f in files}

如果要一个大Series

d = pd.concat(sers, ignore_index=False)