2016-10-19 5 views
5

私はこのようなテキストファイルにデータセットを持っています。いくつかの行に空の要素があるところで、Pandasを使ってテキストファイルを読む?

0 0CF00400 X  8 66 7D 91 6E 22 03 0F 7D  0.021650 R 
    0 18EA0080 X  3 E9 FE 00       0.022550 R 
    0 00000003 X  8 D5 64 22 E1 FF FF FF F0  0.023120 R 

私は

file_pandas = pd.read_csv(fileName, delim_whitespace = True, header = None, engine = 'python') 

を使用して、これを読み出して出力

0 0 0CF00400 X 8 66 7D 91  6E 22 03 0F 7D 0.02165 
    1 0 18EA0080 X 3 E9 FE 0 0.022550 R None None None  NaN 
    2 0 00000003 X 8 D5 64 22  E1 FF FF FF F0 0.02312 

を得た。しかし、私はこれは私がdelim_whitespace = Trueの取り外しと取り付け試した

0 0 0CF00400 X 8 66 7D 91  6E 22 03 0F 7D 0.021650 R 
    1 0 18EA0080 X 3 E9 FE 00         0.022550 R 
    2 0 00000003 X 8 D5 64 22  E1 FF FF FF F0 0.023120 R 

として読みたいですそれはでしかし、これは上の出力の最初の4つの列を結合しただけですが、残りのデータは正しく解析されました。つまり、残りの列は元のtxtファイル(空白のNaN値を除く)でした。

ここから進める方法がわかりません。

サイドノート:00は、0として解析されています。代わりに00を表示する方法はありますか?

+1

これは固定幅ファイルのように見える、あなたはread_fwf'はまた、あなたがタブを持っています '試すことができますかここにスペース? '00'を保存するには' dtype = np.object'を渡す必要があります – EdChum

答えて

8

それはあなたのデータは固定幅の列であるように、あなたがpandas.read_fwf()を試すことができそうです。

from io import StringIO 
import pandas as pd 

df = pd.read_fwf(StringIO("""0 0CF00400 X  8 66 7D 91 6E 22 03 0F 7D  0.021650 R 
0 18EA0080 X  3 E9 FE 00       0.022550 R 
0 00000003 X  8 D5 64 22 E1 FF FF FF F0  0.023120 R"""), 
       header = None, widths = [1,12,2,8,4,4,4,4,4,4,4,4,16,2]) 

enter image description here

+0

私はあなたのメソッドを試しましたが、列4-11の値はすべて空白で区切られています。 6 6、6 7などと同じです。しかし、width引数を指定せずに 'read_fwf()'を使うだけでうまくいきました!私はちょうど '00'の問題を' 0'と表示しています。 'dtype = np.object'を試しましたが、' dtype'はPythonエンジンではサポートされていません。助言がありますか? –

+1

'df = pd.read_fwf(file_name、header = None、コンバーター= {6:str}) 'を試してみましょう。' – Psidom

+0

は 'int'に変換されるのを避けるために' converter = {6:str} '引数を使用してください。今日だけその議論を試すことができる、それは働いた!ありがとう! –

関連する問題