2016-09-02 5 views
1

ヘッダが第1行にないcsvファイルからデータフレームを読みたい。たとえば:。pandas.read_csvのヘッダーの前に不明な数の空白行をスキップする方法はありますか?

In [1]: import pandas as pd 

In [2]: import io 

In [3]: temp=u"""#Comment 1 
    ...: #Comment 2 
    ...: 
    ...: #The previous line is empty 
    ...: Header1|Header2|Header3 
    ...: 1|2|3 
    ...: 4|5|6 
    ...: 7|8|9""" 

In [4]: df = pd.read_csv(io.StringIO(temp), sep="|", comment="#", 
    ...:     skiprows=4).dropna() 

In [5]: df 
Out[5]: 
    Header1 Header2 Header3 
0  1  2  3 
1  4  5  6 
2  7  8  9 

[3 rows x 3 columns] 

上記のコードの問題は、私は今、どのように多くの行が、私はここに行ったようので、私はskiprows=4を使用することはできません、ヘッダの前に存在しますしていないということです

私は、質問Read pandas dataframe from csv beginning with non-fix headerのようにファイルを繰り返し処理できることを知っています。

私が探しているのは、pandas.read_csvが空の行を無視し、最初の空でない行をヘッダーにするという簡単な解決策です。

+0

は申し訳ありませんが設定する必要がありますが、しない 'pd.read_csv(io.StringIO(TEMP)、9月= "|" コメント= "#")'動作しますか? – ayhan

+0

いいえ、コメント行は無視されない空行に変換されます。 – bmello

+0

バージョンに問題はありますか? 'skip_blank_lines = True'は0.18.1のデフォルトです。 – ayhan

答えて

4

あなたがskip_blank_lines=True

df = pd.read_csv(io.StringIO(temp), sep="|", comment="#", skip_blank_lines=True).dropna() 
+0

ありがとうございます。私はそのようなオプションが存在すべきだと思っていて、さらにread_csvのヘルプをチェックしています。私はパンダ0.13を使っているので見つからなかった。私は更新しようとします。 – bmello

関連する問題