将未知数量的Dict索引转换为单个数据帧

2024-09-28 03:18:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个dictd = {},循环浏览网页并将每个页面的数据存储在d[i]。每页上的数据约为20列和100行数据。当它完成后,我可以有任何数量的索引。我遇到的问题是有些页面是重复的。所以d[3]d[4]可能是重复的。你知道吗

我最终将每个索引转换为数据帧,如下所示:

   df1 = d[0]
   df1 = pd.DataFrame(df1[0])

如果我知道索引的数量,我就知道如何将它们转换成一个数据帧,如下所示:

   dfs = len(d)
   #Union dataframes
   if dfs == 4:
   df1 = d[0]
   df2 = d[1]
   df3 = d[2]
   df4 = d[3]
   df1 = pd.DataFrame(df1[0])
   df2 = pd.DataFrame(df2[0])
   df3 = pd.DataFrame(df3[0])
   df4 = pd.DataFrame(df4[0])
   df = pd.concat([df1,df2,df3,df4])

然而,我并不总是知道号码。对于未知数量的索引,有没有办法做到这一点并删除重复的页面?我想用一个变量对象名创建一个for循环,但我知道这可能不是最好的方法。你知道吗


Tags: 数据网页dataframe数量len页面pddf1
2条回答

这将获取d中的每个i,并生成DataFramei[0],然后将这些DataFrame的列表传递给pd.concat

df = pd.concat(list(map(pd.DataFrame, (i[0] for i in d.values()))))

在类似的情况下,我用以下方法来解决这个问题:

def convert_dict_to_frame(dict):
  dict_list = []
  frame_list = []
  for key in dict.keys():
    if dict[key] not in dict_list:
      dict_list.append(dict[key])
  for x in dict_list:
    frame_list.append(pd.DataFrame(x))
  df = pd.concat(frame_list)
  return df

我承认这可能是一种比较慢的方法,但对我来说是有效的。你知道吗

相关问题 更多 >

    热门问题