2017-02-28 5 views
3

첫 번째 행에 주석이있는 파일이 있고 두 행에 머리말이 슬립 된 이름이 있고 세 번째 행에는 색인의 이름. 파일은 다음과 같습니다 :팬더가있는 단일 데이터 프레임 행으로 csv에서 여러 행을 읽는 방법

# 3 5 <-- this is a comment indicating how many rows and column are matrix data 
head1 head2 head3 
head4 head5 
idx1 idx2 idx3 

1.1 1.2 1.3 
1.4 1.5 
2.1 2.2 2.3 
2.4 2.5 
3.1 3.2 3.3 
3.4 3.5 

이렇게 데이터 프레임을 만들려면 어떻게 파일을 읽을 수 있습니까?

 head1 head2 head3 head4 head5 
idx1 1.1 1.2 1.3 1.4 1.5 
idx2 2.1 2.2 2.3 2.4 2.5 
idx3 3.1 3.2 3.3 3.4 3.5 
+0

이것은 매우 맞춤식 요구 사항입니다. 파이썬에서 csv를 읽는 것이 좋습니다. 원하는대로 분석하십시오. 읽기 값에서 데이터 프레임을 만듭니다. –

+0

답장을 보내 주셔서 감사합니다. 텍스트 파일 구조를 없애고, 판다와 함께 한 줄로 두 줄을 읽는 옵션이 있습니까? 부정적인 경우에는 전적으로 자체적으로 파싱하고 DataFrame을 만듭니다. –

답변

4

당신은 (2 소중한 사람을 건너 뛰어) 3-값 라인을 포함하는 하나 개의 데이터 프레임을 생성하기 위해 read_csvskiprows 키워드를 지정하고 모든 2가 포함 된 다른 데이터 프레임을 만들 수 있습니다 가치 라인. header 키워드를 사용하여 머리글 행을 지정할 수 있습니다.

따라서 CSV 파일을 나중에 두 개의 다른 데이터 프레임으로 구문 분석 할 수 있습니다. concatenate 나중에 할 수 있습니다.

df3 = pd.read_csv(..., skiprows=filter(lambda x: x%2 == 1, range(N))) 
df2 = pd.read_csv(..., skiprows=filter(lambda x: x%2 == 0, range(N))) 

그럼 만약에 두 개의 데이터 프레임을 연결하기 위해 concat를 사용할 수있다 : 예로서

(3 반환 라인도 라인 번호 2 값 라인, 홀수 라인의 숫자이다 가정) 단일 하나 :

df = pd.concat((df3, df2)) 
+0

답장을 보내 주셔서 감사합니다. 아이디어는 훌륭합니다! 마지막 줄을 'concat'으로'df = pd.concat ([df2, df3], axis = 1)'로 바 꾸었습니다. –

관련 문제