我想知道爲什麼pandas
重新索引一個系列時有大量的內存使用。熊貓內存使用時重新索引
我創建了一個簡單的數據集:
a = pd.Series(np.arange(5e7, dtype=np.double))
據top
在我的Ubuntu,整個會議大約是820MB。
現在,如果I切片此來提取第一100個元素:
a_sliced = a[:100]
這表明沒有增加的存儲器消耗。
相反,如果我在同一個範圍內重新編制a
:
a_reindexed = a.reindex(np.arange(100))
我得到的約1.8GB內存消耗。試圖與gc.collect
清理沒有成功。
我想知道這是否是預期的,以及是否有一個解決方法來重新索引大數據集而沒有顯着的內存開銷。
我正在使用來自github的pandas
的最新快照。
'reindex'會默認創建一個副本,因此,如果舊的變量仍然是圍繞你應該得到約一倍的內存使用情況。你有沒有試過將'copy = False'傳遞給'reindex'? –
謝謝,用'copy = False'嘗試過,但沒有任何變化。另外,我認爲「熊貓」創建了重新索引的數據的副本,而不是完整的原始數據集。 –