7

次の形式のテキストファイルがいくつかあります。

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を使用してそれらをDataFrameにロードすると、一部の列に対して正しいdtypeが生成されません。たとえば、最初の列はユニコードstrではなくintとして解析され、3番目の列は1つのデータが欠落しているため、intではなくユニコードstrとして解析されます...データフレームの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')

dtypeとエンコーディングの両方の問題を解決するには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

4

2 に答える 2

4

簡単に言えば、いいえ、まだです。この特定の領域については、さらなる作業 (つまり、より活発な開発者) が必要です。使用方法を投稿していただけるread_csvと助かります。バー間の空白が問題であると思われます

編集: これは廃止されました。この動作はread_csvによってネイティブにカバーされています

于 2012-03-15T00:13:16.310 に答える