2016-09-04 9 views
2

私は不等号のCSVファイルを持っています。私はパンダを読みたいです。ファイルは次のようになります:Python Pandas:異種のcsvファイルをインポートするのに最適な方法

2016-01-01; 1.00; 2.00 
2016-01-02; 1,10; 2.05 
2016-01-03; 0.95; 1.90 
Some other text in here 
2016-01-04; 1.01; 2.04 
Some more text there 
2016-01-05; 1.06; 2.07 

私は日付で始まる行をスキップすることができます。私はそれを読み、必要なデータをフィルタリングするためにいくつかの方法を試しましたが、これまでのところ何もできませんでした。私が知っているのは、テキスト行は常に特別な単語(この例では「some」)で始まるということです。ただし、使用できる固定回線番号はありません。あなたは、単一の特殊文字で始まる行を破棄したい場合は上記のコメントで@celで述べたように

+0

を使用入力ルーチンの 'comment'キーワードです。ドキュメントには次のように書かれています: '行の残りが解析されるべきではないことを示します。行の先頭に見つかった場合、その行は完全に無視されます。 '例えばhttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html – cel

答えて

2

は、あなたは、read_csvcommentパラメータを使用することができます。

それ以外の場合は、イテレータからアイテムをフィルタリングするために通常のPythonロジックを使用し、CStringIOを使用できます。

例えば、"some"で始まる行を破棄するために、あなたが使用することができます。

逆に
import CStringIO 

buf = StringIO.StringIO('\n'.join((l for l in open('stuff.txt') if not l.startswith('Some')))) 
pd.read_csv(buf, sep=';') 

、あなたが実際にのみ"some"で始まる行が必要な場合は、その後を見てください

buf = StringIO.StringIO('\n'.join((l for l in open('stuff.txt') if l.startswith('Some')))) 
+0

ありがとうございました。その場合、私はちょうど "Some"という言葉ではっきりとした線を必要とします。私は他の線をすべて必要としません。 –

+0

@BastianLöffler編集を参照してください。これはあなたの質問に答えますか? –

+0

私はこれを調べます。 bufとは何ですか?これはまだ私が推測するパンダのデータフレームではありませんか? –

関連する問題