猿问

将数据框列表添加到字典

我正在尝试将 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)}     

问:为什么dict中只有每个列表的最后一个元素?我是否因为试图将数据框列表添加到字典而生气?两个列表都有唯一的值。


我像这样制作数据框列表:


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']  


Cats萌萌
浏览 128回答 2
2回答

杨魅力

我认为你的问题在这里:for df in dataframes:    df.name = filename[:-10]    df.columns = ['Time', 'Measurement']  这是第一个 for 所以你正在修改所有数据帧,到最后,所有数据帧都将具有相同的名称数据,请记住,当你定义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 的两种方法都是正确的。

回首忆惘然

你可以这样做: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)
随时随地看视频慕课网APP

相关分类

Python
我要回答