我有一些文本文件格式如下:如何使用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
可以添加dtype
和usecols
設置,那就太好了。對不起我的貪婪。^_^
事實上,文件讀取器需要更多的工作。看到這裏:https://github.com/pydata/pandas/issues/926。希望有一位神奇的開發者會從木製品中走出來,並幫助我解決這個問題。 – 2012-03-16 15:10:52