2017-06-22 38 views
2

df = df.groupby(df.index).sum()熊貓:df.groupby()對於大數據集來說太慢了。任何替代方法?

我有一個有380萬行(單列)的數據框,我試圖按索引對它們進行分組。但是這需要永遠完成計算。有沒有其他的方法來處理一個非常大的數據集?提前致謝!!!!

我正在用Python編寫。

數據如下所示。 索引是客戶ID。我想通過Indexqty_liter分組。

df = df.groupby(df.index).sum()

但是這行代碼正在TOOOO多的時間.....

enter image description here

這個DF的信息是以下:

df.info()

<class 'pandas.core.frame.DataFrame'> Index: 3842595 entries, -2147153165 to \N Data columns (total 1 columns): qty_liter object dtypes: object(1) memory usage: 58.6+ MB

+2

你可以顯示'df.info()'? – chrisb

+0

將索引保存爲第一列,然後終端中的這個班輪將實現你想要的'awk'BEGIN {FS = OFS =「,」} {a [$ 1] + = $ 2} END {for(i在a)print i,a [i]}'' –

+2

你有多少個獨特的羣體?即使有380萬個獨特的索引,它在不到一秒的時間內計算總和(我嘗試使用浮點數)。 – ayhan

回答

0

問題是您的數據不是數字。處理字符串需要比處理數字更長的時間。先試試這個:

df.index = df.index.astype(int) 
df.qty_liter = df.qty_liter.astype(float) 

然後再做groupby()。它應該快得多。如果是這樣,看看你是否可以修改你的數據加載步驟從一開始就有適當的dtypes。

相關問題