2017-03-02 67 views
0

我從同一張表中加載數據,但它非常大。 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

是的,該性能並不好,因爲我必須從非本地支持數據庫加載所有內容。 –

回答

0

有兩件事你可以嘗試,可能會或可能不會幫助:

  1. 預分配內存對於大數據,並將每個塊在其位置。
  2. 使用2d numpy數組(如果可能)並將所有內容傳輸到數據幀後。
+0

你可以擴展如何做項目#2嗎? –

+1

如果您可以根據給出的示例提供代碼以便這樣做,那也許會很好嗎? – Archie

0

對於我來說,這似乎是類似於你的,我發現最好的辦法是使用附加功能:

數據框= pd.DataFrame()

dataframe.append(幀,ignore_index = True)

+0

此方法是否創建新的數據框?幀對象是否必須是數據幀還是可以傳入幀列表? –

+0

不,它不返回新的數據幀,但在我的示例中,它更新名爲dataframe的DataFrame對象。您必須傳遞一個DataFrame對象的列表(如您的框架變量,它是DataFrame的列表)。 –