2013-05-18 6 views
1

특정 "end of section"플래그 뒤에 데이터를로드하지 않기 위해 팬더에서 read_csv를 말하는 현명한 방법이 있습니까? 또는 빈 행에 도달하면 중지 할 수 있습니까?pandas read_csv 섹션 종료 플래그

data = pd.read_csv(path, **params) 
eos_line = (data['id'] == eos_string).idxmax() 
data = data.drop(range(eos_line-2, data.shape[0])) 

나는 더 나은 방법이되어야한다고 생각합니다. 불행히도 나는 read_csv를 호출하기 전에 건너 뛰고 자하는 꼬리말의 길이 나 길이를 모릅니다. 데이터는

1,2,3 
4,5,6 


dont want any data after this line 
7,8,9 
10,11,12 

(주 같은 대략 보입니다 : -2입니다 B/C)이이 부분 문자열이 끝나기 전에 실제로이 개 빈 행이 있지만, read_csv 경우에만 나는 (dropna 추측이 시점까지 읽을 것 이 두 줄을 꽤 고통스럽게 제거하십시오)

+0

하나의 옵션은 NROWS을 사용하는 것입니다,하지만 난 OP를 이해하면 미리 ... –

답변

1

웨스는 모든 것을 생각했습니다!

In [40]: data = """A,B,C 
    ....: 1,2,3 
    ....: 4,5,6 
    ....: 7,8,9 
    ....: want to skip this 
    ....: also also skip this 
    ....: """ 

In [41]: read_csv(StringIO(data), skip_footer=2) 
Out[41]: 
    A B C 
0 1 2 3 
1 4 5 6 
2 7 8 9 
+0

내가 오해 될 수 있다는 것을 알 필요가 있지만 -은'eos_line' 라인, 특히 - 나는 문제가 생각 "7,8,9/여기에서 멈추고 싶다/10,20,30/40,50,60/70,80,90"과 같이 더 많은 부분 문자열의 끝 부분을 미리 알지 못합니다. – DSM

+0

당신은 맞지만,''skip_footer = nrows-section_length-2''를 이상적이지는 않지만 할 수 있습니다. 그러나 지금은 CSV 섹션을 지원하지 않습니다. – Jeff

+0

데이터는 DSM이 말했듯이 불행히도 nrows, section_length 또는 바닥 글의 길이를 미리 알지 못한다면 ... – user1507844

관련 문제