将数据框列表添加到字典中

时间:2020-04-21 23:13:59

标签: python pandas dictionary

我正在尝试将7个数据帧的列表添加到字典中,其中键是数据帧名称,值是数据帧本身,就像这样:

    {"Clock 1": clock1_df, "Clock 2": clock2_df, ...}

我已经创建了一个具有数据帧名称的列表,然后尝试将两个列表放入字典中,但是它只会将每个列表的最后一个元素添加到字典中:

    adict = dict(zip(f_names_list, dataframes))     

    bdict = {k:v for k, v in zip(f_names_list, dataframes)}     

问:为什么字典中每个列表的最后一个元素才是? 我为尝试将数据帧列表添加到字典而生气吗? 这两个列表都有唯一的值。

我使数据框列表如下:

path = 'dat/'
f = []

for (dirpath, dirnames, filenames) in walk(path):
    f.extend(filenames)
    break

dataframes = []
for filename in filenames:
  dataframes.append(pd.read_csv(path+filename, sep=" ", header = None))
  for df in dataframes:
    df.name = filename[:-10]
    df.columns = ['Time', 'Measurement']  

2 个答案:

答案 0 :(得分:1)

您可以这样做:

d = {}
for filename in filenames:
    d[filename] = pd.read_csv(path+filename, sep=" ", header = None)

此处,键将具有数据框的名称(即文件名),并且值是实际的数据框。

您可以像这样从dict中读取内容:

for key, val in d.items():
    print(key,val)

答案 1 :(得分:1)

我认为您的问题在这里:

for df in dataframes:
    df.name = filename[:-10]
    df.columns = ['Time', 'Measurement']  

这是第一个用于的内部,因此您要修改所有数据帧,最后,所有数据帧将具有相同的名称数据,请记住,在定义df时,此变量包含对列表中的项目,因此您可以修改列表中的所有内容。

我不知道数据的样子,但这也许正是您要寻找的:

dataframes = []
for filename in filenames:
    dataframes.append(pd.read_csv(path+filename, sep=" ", header = None))
    df = dataframes[-1]
    df.name = filename[:-10]
    df.columns = ['Time', 'Measurement']

两种使用zip的方法都是正确的。