1
我有一個需要用32位Python排序的大型熊貓系列(5000萬+),但在排序過程中出現MemoryError。看來,熊貓的排序算法在排序過程中會創建幾個臨時數組。我知道我可以使用numpy的排序算法,但是在pandas API中是否有一個替代排序算法,我可以使用它具有較小的內存佔用量?熊貓排序與更小的內存佔用?
我有一個需要用32位Python排序的大型熊貓系列(5000萬+),但在排序過程中出現MemoryError。看來,熊貓的排序算法在排序過程中會創建幾個臨時數組。我知道我可以使用numpy的排序算法,但是在pandas API中是否有一個替代排序算法,我可以使用它具有較小的內存佔用量?熊貓排序與更小的內存佔用?
2 possibilites
1)這基本上是什麼樣的呢,但不使用臨時變量(請注意,如果您有任何地方的NaN這將無法工作)
In [1]: s = Series(np.random.rand(10))
In [3]: np.argsort(s.values)
Out[3]: array([8, 0, 1, 3, 9, 6, 2, 7, 5, 4])
In [4]: s[np.argsort(s.values)]
Out[4]:
8 0.033948
0 0.183882
1 0.236021
3 0.372763
9 0.383721
6 0.489090
2 0.498036
7 0.676246
5 0.709906
4 0.738510
dtype: float64
2)這是沒有已實現,但可以寫入HDFStore表;有一個readSorted方法以排序的順序讀取它。嘗試方法1),如果這不起作用,那麼我可以給你一個小腳本來做到這一點我認爲
謝謝你不需要寫小scipt,我可以做到這一點。 – andrew