

初心者です．  
csvファイルをインポートしたいと考えています．  
データセットは以下の通りです（簡略化しています）．

[code]

    0   0   0   0   
    0  12  12  12
    0 123 123 123 
    
[/code]

[code]

    data=pd.read_csv( '○○.csv',sep=' ')
    
[/code]

上記のようにインポートすると

[code]

    0 NaN NaN NaN   0 NaN NaN NaN   0 NaN NaN NaN  0
    0 NaN NaN  12 NaN NaN  12 NaN NaN  12
    0 NaN 123 NaN 123 NaN 123 
    
[/code]

となり，スペースの数にNaNのが反映されてしまいます．  
何か良い方法はございませんでしょうか？


CC BY-SA 3.0
2017-06-08T08:48:19.057
35394
2017-06-08T10:10:43.390
2017-06-08T09:11:59.987
76
23647
question
python pandas
CSVをPandasで扱う際のスペース区切りの問題


[pandas の I/O API のドキュメント](http://pandas.pydata.org/pandas-
docs/stable/io.html)によると、

[code]

    read_csv(filename, sep='\s+')
    
[/code]

とするか、

[code]

    read_csv(filename, delim_whitespace=True)
    
[/code]

とすると良いです。

また、以下のオプションも有用です。

  * `header=None`： ヘッダー行を付けない。
  * `skipinitialspace=True`： 先頭の空白文字を無視する。

以下実行例です。分かりやすさのため、ファイルから読み込む代わりに文字列からバッファーを作っています。

[code]

    >>> import StringIO
    >>> import pandas as pd
    >>> buffer = StringIO.StringIO("""0   0   0   0   
    ... 0  12  12  12
    ... 0 123 123 123
    ... """)
    >>> data = pd.read_csv(buffer, header=None, delim_whitespace=True)
    >>> data
       0    1    2    3
    0  0    0    0    0
    1  0   12   12   12
    2  0  123  123  123
    
[/code]

### 参考URL

  * [`read_csv` の API Reference](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html) (私が見た時点では pandas 0.20.2 の API Reference です) 
    * 概略を把握するには、 [pandas I/O API のドキュメント](http://pandas.pydata.org/pandas-docs/stable/io.html) の方が分かりやすいです。
  * [How to make separator in read_csv more flexible wrt whitespace?](https://stackoverflow.com/q/15026698/5989200) \-- 本家 Stack Overflow


CC BY-SA 3.0
2017-06-08T09:46:06.900
35398
2017-06-08T10:10:43.390
2017-06-08T10:10:43.390
19110
19110
35394
answer