2016-11-17 5 views
-1

csvコマンドを使用してpd.read_csvを読むと、 行内の特定の値を含む行をスキップするにはどうすればよいですか? 50行目、55行目、1列目の値が100であるため、csvファイルを読み込むときにその行をスキップします。 どのように私はこれらのコマンドをpd.read_csv( 'read.csv')のような読み込みコマンドに入れることができますか? 値の全長は300です。パンダのデータフレームを読むときに特定の値を含む特定の行をスキップ

+0

値の長さは何ですか? – jezrael

+1

後でそれらを落とすことと、それをまったく読まないことの違いは何ですか? 'pd.read_csv( 'file.csv').query( 'col1!= 100')' ... – Kartik

+0

^^^^^^^^^ THAT! @カルティック、なぜそれは答えではないのですか? – piRSquared

答えて

2

後でドロップすることと、それをまったく読まないことの違いは何ですか?あなたは単に次のようにします:

pd.read_csv('file.csv').query('col1 != 100') 
+0

実際に違いはありません!ありがとうございました!出来た! – MMM

0

唯一の方法は、ファイルをあらかじめ解析することです。ファイルを読み込むにはジェネレータを使用し、必要な行はyieldにしてください。それを使用して、目的の行をStringIOオブジェクトに読み込み、そのオブジェクトをファイルパスのどこかにread_csvに渡します。

import StringIO 
import pandas as pd 

def read_file(file_name): 
    with open(file_name, 'r') as fh: 
     for line in fh.readlines(): 
      parts = line.split(',') 
      if parts[0] != '100': 
       yield line 

stream = StringIO.StringIO() 
stream.writelines(read_file('foo.txt')) 
stream.seek(0) 

df = pd.read_csv(stream) 
関連する問題