2017-03-09 12 views
1

1461 개의 속성을 가진 CSV 파일이 있습니다. 팬더 데이터 프레임에로드하고 싶습니다. 문제는 많은 행에 후행 연속 열에 대한 값이 없다는 것입니다. 그래서 팬더는 불규칙한 길이 때문에 파싱 오류를줍니다. 선행 열에 대해 누락 된 값을 한 번 넣고 csv 파일을 데이터 프레임에로드하는 방법은 무엇입니까?데이터 과학 팬더 CSV

EDIT1 우리는

a,b,c,d,e,f,g,h,i""" 1,2,4,5 1,0,9,8,7,6,5,4,7 1,3,5,6,7 6,7,8,8,9,4,5,3,5"""

내가 대신에 아래

"""a b c d e f g h i 
    1 2 4 5 ? ? ? ? ? 
    1 0 9 8 7 6 5 4 7 
    1 3 5 6 7 ? ? ? ? 
    6 7 8 8 9 4 5 3 5""" 

NaN이 같은 팬더의 데이터 프레임을 원하는 다음과 같이 데이터 세트 csv 파일이 있음을 볼 수 있습니까? 괜찮을 수 있습니다

쉼표가 같지 않은 길이 문제가 충분하지 않습니다.

+0

는 당신이 우리의 오류 추적 보여줄 수 있습니까? –

+0

팬더 밖에서 파일을 사전 처리해야하는 것처럼 들립니다. – Khris

+0

불규칙한 길이의 파일 행 10 개를 줄 수 있습니까? 또한 분리 기호가 누락되어 있습니까? – jezrael

답변

1

이 (속성 열이있는 경우) range에 의해 열 이름을 read_csv에 매개 변수 names을 사용할 수있는 것 같다

import pandas as pd 
from pandas.compat import StringIO 

temp=u""" 
a,v 
c,v,f,r 
b,g 
y""" 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
#in real data change 4 to 1461 
names = range(4) 
df = pd.read_csv(StringIO(temp), names=names) 
print (df) 
    0 1 2 3 
0 a v NaN NaN 
1 c v f r 
2 b g NaN NaN 
3 y NaN NaN NaN 

편집 :

temp=u"""a,b,c,d,e,f,g,h,i 
1,2,4,5 
1,0,9,8,7,6,5,4,7 
1,3,5,6,7 
6,7,8,8,9,4,5,3,5""" 
#after testing replace 'StringIO(temp)' to 'filename.csv' 
df = pd.read_csv(StringIO(temp)) 
print (df) 
    a b c d e f g h i 
0 1 2 4 5 NaN NaN NaN NaN NaN 
1 1 0 9 8 7.0 6.0 5.0 4.0 7.0 
2 1 3 5 6 7.0 NaN NaN NaN NaN 
3 6 7 8 8 9.0 4.0 5.0 3.0 5.0 
+0

나는 그의 질문을 이해하는 한, 그가 빈 컬럼을 이끌고 뒤 흔드는 것은 아닌 것에 대해 이야기하고있다. 나는 그가 파일을 정상적으로 읽고, 구분 기호를 세며, 각 줄의 시작에 적절한 수를 덧붙일 필요가 있다고 생각합니다. – Khris

+0

@Khris - 음, 의견을 주셔서 감사합니다. 하지만 일부 분리 기호가 누락 된 것으로 보이므로 값이 오른쪽 열과 일치하지 않아 구문 분석 오류가 발생합니다. 그러나 데이터가 없으면 어려운 대답입니다. – jezrael

+0

오류가 사라졌지만 모든 값을 NaN으로 처리하고 모든 행을 가져 오지 않습니다. 데이터는 숫자입니다. 숫자로 변환합니까? 미안하지만 나는 꼬리말을 의미했다. 미안 한 수레가 괜찮아. 내가 원하는 건 숫자에 대해 NaN을 얻지 않는 것이다. 귀하의 솔루션은 정확하지만 그것은 문자열에 대한 것 같습니다 어떻게 우리가 수레로 작동하게 만들 수 있습니까? –

관련 문제