2016-05-13 7 views
1

より大きな.txtファイルから1つのテーブルをPythonに読み込もうとしています。pandas.read_csvを使用して列を区切る

データの抽出物がある:

2 Network magnitudes: 
    MLv  2.05 +/- 1.34 7    
    M   2.05   7 preferred 

7 Phase arrivals: 
    sta net dist azi phase time   res  wt sta 
    BMOR EC 0.0 226 P  00:22:31.385 -0.6 M 1.0 BMOR 
    BREF EC 0.0 347 P  00:22:31.543 -0.5 M 1.0 BREF 
    BTAM EC 0.0 58 P  00:22:31.796 -0.3 M 1.0 BTAM 
    BVC2 EC 0.0 26 P  00:22:33.061 0.8 M 1.0 BVC2 
    BNAS EC 0.1 294 P  00:22:32.871 -0.1 M 1.0 BNAS 
    SUCR EC 0.1 314 P  00:22:34.610 0.6 M 1.0 SUCR 
    BRRN EC 0.1 207 P  00:22:34.768 0.4 M 1.0 BRRN 

7 Station magnitudes: 
    sta net dist azi type value res  amp per 
    BMOR EC 0.0 226 MLv  1.48 -0.57 1.20076  

私は(数値と文字列を扱うことができない/しない限りbugが含まれている様々な理由のために短いの両方の秋位相到着テーブルをしたいので、np.loadtextnp.genfromtxt私はpandas.read_csv fucntionにしようとしてきた

私は)ここで行うことはできません一つだけのスペース(」「)区切り文字を指定しますが、区切り文字

に認識されていません

は生成します。

彼らはそれぞれ1つの文字列だとそれが空白区切り文字に注意を払っていないことから離れてよさそうだ
a 
Out[90]: 
    sta net dist azi phase time   res  wt sta 
0 BMOR EC 0.0 226 P  00:22:31.385 -0....  
1 BREF EC 0.0 347 P  00:22:31.543 -0....  
2 BTAM EC 0.0 58 P  00:22:31.796 -0....  
3 BVC2 EC 0.0 26 P  00:22:33.061 0....  
4 BNAS EC 0.1 294 P  00:22:32.871 -0....  
5 SUCR EC 0.1 314 P  00:22:34.610 0....  
6 BRRN EC 0.1 207 P  00:22:34.768 0.... 

a.values 
Out[89]: 
array([['BMOR EC 0.0 226 P  00:22:31.385 -0.6 M 1.0 BMOR'], 
     ['BREF EC 0.0 347 P  00:22:31.543 -0.5 M 1.0 BREF'], 
     ['BTAM EC 0.0 58 P  00:22:31.796 -0.3 M 1.0 BTAM'], 
     ['BVC2 EC 0.0 26 P  00:22:33.061 0.8 M 1.0 BVC2'], 
     ['BNAS EC 0.1 294 P  00:22:32.871 -0.1 M 1.0 BNAS'], 
     ['SUCR EC 0.1 314 P  00:22:34.610 0.6 M 1.0 SUCR'], 
     ['BRRN EC 0.1 207 P  00:22:34.768 0.4 M 1.0 BRRN']], dtype=object) 

行はして分離することができ、 list(a.values[0])[0].split()ですが、個々の列を取得するためにこれが再編成されます。私はpandas.read_csvが分かれていると認識していますので、個々の列を抽出することができます(スケールアップすると効率的になることが重要になります)

どこが間違っていますか?

\s+、ない\+s

delim_whitespaceパラメータ見出しの下に、the documentationにタイプミスから来た:

+1

これを誤植( '\ s +'ではなく '\ + s')にするか、[this](http://stackoverflow.com/questions/15026698)の複製として閉じるかはわかりません。/how-to-make-separator-in-read-csv-more-flexible-wrt-whitespace)を使用します。 – DSM

+0

ちょっと@DSM - ありがとう!私はちょうどそれをテストしたし、あなたは正しい、それはタイプミスです。しかし、私はドキュメントから直接それを取った、typoはそこからです:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html(delim_whitespaceパラメータの下) – mjp

+0

あなたは正しいです!私はそれが固定されることを確認します。 :-) – DSM

答えて

2

としてはDSMが指摘し、それが区切り文字のタイプミスです。

+1

記録のために、これはトランクで[c9ffd78](https://github.com/pydata/pandas/commit/c9ffd7891dadd6e5590695e142f77a3476b5c4e3)で修正されました。 – DSM

関連する問題