2016-11-17 1 views
-1

csv 명령을 읽을 때 pd.read_csv, 특정 값을 연속적으로 포함하는 줄을 건너 뛰려면 어떻게합니까? 50 번째, 55 번째 행에서 첫 번째 열의 값이 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) 
관련 문제