2014-06-06 3 views
4

는 내용으로, 파일, a.dat을 고려 인용 부호 안에 쉼표를 무시 : 나는 numpy.genfromtxt로 가져하려고numpy genfromtxt/pandas read_csv;

address 1, address 2, address 3, num1, num2, num3 
address 1, address 2, address 3, 1.0, 2.0, 3 
address 1, address 2, "address 3, address4", 1.0, 2.0, 3 

. 함수가 3 행에 추가 열을 볼 수 그러나 나는 pandas.read_csv과 유사한 오류가 발생합니다 :

np.genfromtxt('a.dat',delimiter=',',dtype=None,skiprows=1) 

ValueError: Some errors were detected ! 
    Line #3 (got 7 columns instead of 6) 

pandas read_csv sort of works - but it gives me an unaligned data structure: 

pd.read_csv('a.dat') 

pandas.parser.CParserError: Error tokenizing data. C error: Expected 6 fields in line 3, saw 7 

내가이를 보상하기 위해 입력 매개 변수를 찾기 위해 노력하고있어. 내가 numpy ndarray 또는 pandas 데이터 프레임으로 끝나면 나는 상관하지 않습니다.

genfromtxt 및/또는 read_csv 내에 설정할 수있는 매개 변수가있어서 음성 기호 내에서 쉼표를 무시할 수 있습니까?

quotechar : : 문자열 (길이 1) 인용 된 항목의 시작 과 끝을 나타내는 데 사용되는 문자

나는 read_csv 따라서 정의 된 quotechar='"' 매개 변수를 포함하고 있습니다. 인용 된 항목에는 구분 기호가 포함될 수 있으며 은 무시됩니다.

read_csv가 내 케이스에서 기본적으로 작동해야하는 것처럼 읽습니다. 아직 그렇지 않습니다.

쉼표를 제거하기 위해 파일을 사전 처리 할 수 ​​있음을 알 수 있습니다. 가능하다면 피하고 싶지만 이것이 유일한 방법 일 경우 제안을 환영합니다.

+0

quotechar이 작동하지 않는 이유는 무엇입니까? 누구? –

답변

10

그냥 this을 찾기 위해 관리 : 내가 없어진

중요한 매개 변수는 skipinitialspace=True입니다 -이 작품이 "쉼표로 구분 한 후 공백 거래"

a=pd.read_csv('a.dat',quotechar='"',skipinitialspace=True) 

    address 1 address 2   address 3 num1 num2 num3 
0 address 1 address 2   address 3  1  2  3 
1 address 1 address 2 address 3, address4  1  2  3 

을 -)

2

파이썬의 내장 csv 모듈은 이러한 종류의 데이터를 처리 할 수 ​​있습니다.

with open("a.dat") as f: 
    reader = csv.reader(f, skipinitialspace=True) 
    header = next(reader) 
    dtype = numpy.dtype(zip(header, ['S20', 'S20', 'S20', 'f8', 'f8', 'f8'])) 
    data = numpy.fromiter(itertools.imap(tuple, reader), dtype=dtype) 
관련 문제