如何将字典列表转换为单个pandas数据帧?

时间:2013-01-23 02:33:14

标签: python pandas

我以前的代码是pandas数据帧列表的列表,如下所示

rowResults = [ [df, df, df], [df, df, df], ... [df, df, df] ]
results=results.append(rowResults)

由于所有数据帧都具有完全相同的列,因此当我添加上面的列表时,它将整个数据结构转换为单个数据帧,其列数与单个数据帧相同。

现在,由于性能问题,我已将小型数据帧转换为字典。如果我创建了大量的数据帧,我发现在存储pandas数据帧使用的元数据信息时存在某种内存泄漏。当我使用字典时,这不会发生。

我的新代码如下所示

rowResults = [ [dict, dict, dict], [dict, dict, dict], ... [dict, dict, dict] ]
results=results.append(rowResults)

以上代码与之前的情况没有相同的效果,这是正常的。如何转换上面的字典列表列表,以便最终的pandas数据帧具有与字典键相同的列?在字典的情况下,我的输出如下

(Pdb) results
<class 'pandas.core.frame.DataFrame'>
Int64Index: 799 entries, 0 to 798
Data columns:
0                799  non-null values
1                799  non-null values
2                799  non-null values
column1            0  non-null values
column2            0  non-null values
column3            0  non-null values
column4            0  non-null values

请告知。

1 个答案:

答案 0 :(得分:5)

我在下面的代码中实现了以上标准。如果这是最好的方法,请告诉我。请注意,每行都是以下代码中的字典列表。

frames=[]
for row in self.rowResults:
    frames.append(pandas.DataFrame(row))
self.results = pandas.concat(frames)