2012-03-14 182 views
7

我有一些文本文件格式如下:如何使用pandas.read_csv從csv文件加載數據時指定dtype?

000423|東阿阿膠|  300|1|0.15000|   | 
000425|徐工機械|  600|1|0.15000|   | 
000503|海虹控股|  400|1|0.15000|   | 
000522|白雲山A|  |2|  | 1982.080| 
000527|美的電器|  900|1|0.15000|   | 
000528|柳 工|  300|1|0.15000|   | 

當我使用read_csv將它們加載到數據幀,它不會產生某些列正確的D型。例如,第一列被解析爲int,而不是unicode str,第三列被解析爲unicode str,而不是int,因爲缺少一個數據......有沒有辦法預置DataFrame的dtype,就像numpy.genfromtxt呢?

更新: 我用read_csv這樣這引起了問題:

data = pandas.read_csv(StringIO(etf_info), sep='|', skiprows=14, index_col=0, 
         skip_footer=1, names=['ticker', 'name', 'vol', 'sign', 
         'ratio', 'cash', 'price'], encoding='gbk') 

爲了解決這兩個D型和編碼的問題,我需要使用unicode()numpy.genfromtxt第一:

etf_info = unicode(urllib2.urlopen(etf_url).read(), 'gbk') 
nd_data = np.genfromtxt(StringIO(etf_info), delimiter='|', 
         skiprows=14, skip_footer=1, dtype=ETF_DTYPE) 
data = pandas.DataFrame(nd_data, index=nd_data['ticker'], 
         columns=['name', 'vol', 'sign', 
           'ratio', 'cash', 'price']) 

如果read_csv可以添加dtypeusecols設置,那就太好了。對不起我的貪婪。^_^

+3

事實上,文件讀取器需要更多的工作。看到這裏:https://github.com/pydata/pandas/issues/926。希望有一位神奇的開發者會從木製品中走出來,並幫助我解決這個問題。 – 2012-03-16 15:10:52

回答

4

簡單地說:不,還沒有。在這個特定領域需要更多的工作(閱讀:更活躍的開發人員)。如果你可以發佈你如何使用read_csv它可能會有所幫助。我懷疑酒吧之間的空白可能是問題

編輯:這是現在已經過時。此行爲由本地覆蓋read_csv

+1

謝謝Wes。剛剛在youtube上觀看了Python中的數據分析的PyCon視頻。很好的幫助! – Deadwood 2012-03-15 01:34:54

1

您現在可以在read_csv中使用dtype。

PS:榮譽Wes McKinney回答,與「過去的韋斯」相抵觸感覺很尷尬。

相關問題