2013-04-18 22 views
1

我有一個需要用32位Python排序的大型熊貓系列(5000萬+),但在排序過程中出現MemoryError。看來,熊貓的排序算法在排序過程中會創建幾個臨時數組。我知道我可以使用numpy的排序算法,但是在pandas API中是否有一個替代排序算法,我可以使用它具有較小的內存佔用量?熊貓排序與更小的內存佔用?

回答

1

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),如果這不起作用,那麼我可以給你一個小腳本來做到這一點我認爲

+0

謝謝你不需要寫小scipt,我可以做到這一點。 – andrew