我以前的代码是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
请告知。
答案 0 :(得分:5)
我在下面的代码中实现了以上标准。如果这是最好的方法,请告诉我。请注意,每行都是以下代码中的字典列表。
frames=[]
for row in self.rowResults:
frames.append(pandas.DataFrame(row))
self.results = pandas.concat(frames)