熊猫的连接性能

问题描述:

我从同一张表中加载数据,但它非常大。 1百万条记录。我认为最好创建250,000个大块,所以我得到4个DataFrame。熊猫的连接性能

frames = [] 
for chunk in chunks(some_very_large_list, 250000): 
    frames.append(pd.DataFrame(data=chunk, columns=['A', 'B', 'C'])) 

当我打电话pd.concat(frames)它正在采取非常长的时间合并在一起的一切。加速这一过程的最佳方式是什么?

+0

您是否将其与装载所有数据的单片模块进行比较? – languitar

+0

是的,该性能并不好,因为我必须从非本地支持数据库加载所有内容。 –

有两件事你可以尝试,可能会或可能不会帮助:

  1. 预分配内存对于大数据,并将每个块在其位置。
  2. 使用2d numpy数组(如果可能)并将所有内容传输到数据帧后。
+0

你可以扩展如何做项目#2吗? –

+1

如果您可以根据给出的示例提供代码以便这样做,那也许会很好吗? – Archie

对于我来说,这似乎是类似于你的,我发现最好的办法是使用附加功能:

数据框= pd.DataFrame()

dataframe.append(帧,ignore_index = True)

+0

此方法是否创建新的数据框?帧对象是否必须是数据帧还是可以传入帧列表? –

+0

不,它不返回新的数据帧,但在我的示例中,它更新名为dataframe的DataFrame对象。您必须传递一个DataFrame对象的列表(如您的框架变量,它是DataFrame的列表)。 –