2014-09-18 87 views
0

我試圖加載大小2GB的一個巨大的文本文件,並試圖在一個特定的列提取數據檢索特定的列中的數據使用熊貓不能與Python

LOCATION_ID     PRODUCT_ID PRODUCT_DESC     NET_SALES       SALES_DATE 
------------------------------ ----------- ------------------------------ --------------------------------- ---------- 
100020         8 Lotto Texas            8.000 01/01/2009 
100020         9 Pick 3             105.500 01/01/2009 
100020         10 Cash Five             7.000 01/01/2009 
100020         12 Texas Two Step            

的數據看起來像這樣什麼我試圖做的是提取唯一列的位置編號

我試過使用pandas.read_csv(文件,chunksize = 4),但我沒有得到列中的任何東西只有索引存在。我有點卡住,我能夠使用簡單的文件讀取,但由於文件的大小是如此巨大的python編譯器崩潰。我如何使用熊貓達到預期效果?請幫助

+0

如果它對你有幫助,你應該接受DSM的回答,在投票箭頭 – EdChum 2014-09-19 19:57:06

回答

1

該文件看起來不像csv,因爲似乎沒有任何逗號,並且它似乎甚至不是分隔文件。你可能有更好的運氣把它當作一個固定寬度格式的文件,並使用read_fwf

>>> pd.read_fwf("296.dat", skiprows=[1]) 
    LOCATION_ID PRODUCT_ID PRODUCT_DESC NET_SALES SALES_DATE 
0  100020   8  Lotto Texas  8.0 01/01/2009 
1  100020   9   Pick 3  105.5 01/01/2009 
2  100020   10  Cash Five  7.0 01/01/2009 
3  100020   12 Texas Two Step  NaN   NaN 

你可以用fwf做同樣的chunksize技巧,你可以與read_csv,這樣你就可以限制在內存量任何一次。

另請注意,這裏我簡單地使用了「推斷列寬」的默認值;您可能必須手動指定它們,具體取決於您的數據。

+0

下方會出現一個刻度標記感謝您的幫助,我會嘗試一下,但是如何才能訪問文件的第一列,即位置標識或將其轉換到任何數據框會有幫助嗎?它給內存錯誤我的內存是4GB我嘗試使用塊我仍然無法訪問基於列的數據 – user2963604 2014-09-18 21:42:23

+0

上面的*是一個DataFrame,就像你使用chunked = pd.read_fwf(「yourfilename .txt「,skiprows = [1],chunksize = 1000)'然後遍歷它。您可以使用'df [「LOCATION_ID」]。unique()'獲得唯一值,然後收集這些值。 – DSM 2014-09-18 21:45:12

+0

在這樣做,我得到一個錯誤,說明keyerror = LOCATION_ID – user2963604 2014-09-18 21:53:48