2016-09-02 8 views
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 (임시) 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