4

我之前的代码是熊猫数据框列表列表,如下所示

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

请指教。

4

1 回答 1

5

我在下面的代码中实现了上述用途。让我知道这是否是最好的方法。请注意,每一行都是下面代码中的字典列表。

frames=[]
for row in self.rowResults:
    frames.append(pandas.DataFrame(row))
self.results = pandas.concat(frames)
于 2013-01-23T03:52:18.677 回答