2017-03-03 1 views
2

私は、カラムデリミタとして '^ A'、ラインデリミタとして '^ B'を持つデータセットを持っています。現在、これを読み込もうとすると、pandasは最初の行が終了していることを認識していないため、すべてが新しい列ヘッダーとして読み込まれます。私は単純なpandasのread_csvステートメントを使用しています。ここにあります;パンダでラインデリミタを選択する

data = pd.read_csv('data.dat', sep='^A', engine='python') 

は、これは.datファイルであるという事実とは何かだろうか?

パンダがどのように行区切り文字を扱うことができるかについて話している文献はありません。

+2

表示されないバイナリ値の置換文字として '^ A'と'^B'を表示するエディタだけですか? – EdChum

+2

が、それはそれがあることだろ互換ですので、私は、これは、あなたが最初に私たちのファイルを解析し、前処理をし、改行文字に「^ B」を変更する必要があるだろうサポートされているとは思わない – languitar

+0

@languitarこれは可能ですが、私はどの区切り文字を使用するべきかまだ分かりません。 – Taylrl

答えて

0
df = pd.read_csv(StringIO("""h1^Ah2^Ah3^B111^A222^A333^B111^A222^A333^B111^A222^A333"""), 
      sep='\^B',engine='python', header=None) 

df = df.stack().to_frame() 

df 
Out[52]: 
       0 
0 0  h1^Ah2^Ah3 
    1 111^A222^A333 
    2 111^A222^A333 
    3 111^A222^A333 

df = df[0].str.split('\^A', expand=True) 

df 
Out[54]: 
     0 1 2 
0 0 h1 h2 h3 
    1 111 222 333 
    2 111 222 333 
    3 111 222 333 

df.columns = df.iloc[0].tolist() 

df 
Out[69]: 
     h1 h2 h3 
0 0 h1 h2 h3 
    1 111 222 333 
    2 111 222 333 
    3 111 222 333 

df = df[1:] 

df 
Out[71]: 
     h1 h2 h3 
0 1 111 222 333 
    2 111 222 333 
    3 111 222 333 
それは
関連する問題