2016-06-28 6 views
0

を解析:パンダのデータフレームへのヘッダCSVを読んでいないと私はCSVがpandas.DataFrameにファイルの下に似読みしようとしています日付

2011 1 10 AAPL Buy  1500 
2011 1 13 AAPL Sell 1500 
2011 1 13 IBM  Buy  4000 
2011 1 26 GOOG Buy  1000 

データが列ヘッダーを持っていません。私がそのファイルを読むと、最初の3つの列を '日付'の列にパースしたいと思っています。

import pandas 
pandas.read_csv(fileName, 
       header = None, 
       names = ('Date', 'Symbol', 'Side', 'Quantity'), 
       parse_dates = {'Date' : [0, 1, 2]}) 

上げること:

NotImplementedError: file structure not yet supported 

は、私が試した:

pandas.read_csv(fileName, 
       header = None, 
       names = ('Year', 'Month', 'Day', 'Symbol', 'Side', 'Quantity'), 
       parse_dates = {'Date' : ['Year', 'Month', 'Day']}) 

をし、どちらもその仕事をしていないし、同じ例外をスローしたので、次は私が試したものです。

だから最終的に私がして、そのファイルを読み込む達成:

orders = pandas.read_csv(fileName, 
         header = None, 
         parse_dates = {'Date' : [0, 1, 2]}) 
orders.rename(columns = {3: 'Symbol', 4 : 'Side', 5: 'Quantity'}) 

名に列名を渡すことで、作業の最初の呼び出しをする方法はありますか?なぜその例外が発生するのですか? 同様の問題がPandas file structure not supported errorで報告されましたが、同じ回避策以外の解決策が見つかりませんでした。

私は私の知識の最新バージョンであるパンダ0.18.1を使用しています。

答えて

1

は、追加しよう:

sep='\s+' 

または

delim_whitespace=True 

パラメータ

デモ:

In [7]: %paste 
(pd.read_csv(fileName, sep='\s+', header = None, 
      names = ('Year', 'Month', 'Day', 'Symbol', 'Side', 'Quantity'), 
      parse_dates = {'Date' : ['Year', 'Month', 'Day']}) 
) 
## -- End pasted text -- 
Out[7]: 
     Date Symbol Side Quantity 
0 2011-01-10 AAPL Buy  1500 
1 2011-01-13 AAPL Sell  1500 
2 2011-01-13 IBM Buy  4000 
3 2011-01-26 GOOG Buy  1000 

In [8]: %paste 
(pd.read_csv(fileName, delim_whitespace=True, header = None, 
      names = ('Year', 'Month', 'Day', 'Symbol', 'Side', 'Quantity'), 
      parse_dates = {'Date' : ['Year', 'Month', 'Day']}) 
) 
## -- End pasted text -- 
Out[8]: 
     Date Symbol Side Quantity 
0 2011-01-10 AAPL Buy  1500 
1 2011-01-13 AAPL Sell  1500 
2 2011-01-13 IBM Buy  4000 
3 2011-01-26 GOOG Buy  1000 
+0

おかげ@MaxU。ファイルの実際の構造は次のとおりです。 2011年10月、AAPL、購入、1500年、 2011,1,13、AAPL、販売、1500年 2011,1,13、IBM、購入、4000、 最終的に、ダミーの列 'names =( '年'、 '月'、 '日'、 '記号'、 '側'、 '数量'、 'bla ')、カンマのために働きました。例外は少しでも明確にすることができます.. –

関連する問題