팬더를 사용하여 .csv 파일을 조작하려고 하는데 다음과 같은 오류가 발생합니다.
parser.parser.>파서.CParserError: 데이터를 토큰화하는 중 오류가 발생했습니다. C 오류: 3행에는 2개의 필드가 있어야 하는데 12개가 있습니다.
판다의 문서를 읽어보려고 노력했지만 아무것도 찾지 못했어요.
내 코드는 간단합니다:
path = 'GOOG Key Ratios.csv'
#print(open(path).read())
data = pd.read_csv(path)
어떻게 해결할 수 있을까요? 'csv' 모듈을 사용해야 합니까 아니면 다른 언어를 사용해야 합니까?
파일은 Morningstar에서 가져옵니다.
이 문제가 될 수 있습니다
이를 해결하기 위해 9월 ',' 지정 및 / 또는 '헤더입니다 시도하시겠습니까 호출할 때' '인수만 read_csv'. 예를 들어,
df = pandas.read_csv(fileName, sep='delimiter', header=None)
위의 코드에서 '와' 헤더입니다 알 수 있는 '판다' 는 9월 너회의 구분 = 없음) 의 소스 데이터 주님으로부터그에게 행일 헤더도 / 열 개의 국내 타이틀을 우승하였다. 이렇게 말하는 이 문서: 헤더 파일이 포함되어 있지, 만약 " 행일 관심용 전달하십시오 헤더입니다 = None", 명시적으로 합니다. 예를 들어, 정수 자동으로 만들어집니다.}, {0.1,2 각 분야의 지수 판다.
네 CSV 파일 '에서' 유추 할 수가 가변적입니다 read_csv 열과 열 수가 처음 몇 행뿐만. 이를 해결하기 위해 두 가지 방법으로 이 경우:
할 수 있는 첫 번째 줄을 맥스야 CSV 파일 변경하십시오 더미 (dummy) 열 (지정하고 '헤더입니다 = [0]')
사용 목록 (범위 (0, N)) '또는' 이름 = 여기서 N 은 최대 열.
내가 가진 것은 아마도 이 문제가 아니라 다른 이유. 나는 내 뒤에 있던 쉼표 CSV 는 약간의 열을 추가 읽으려고 판다. 하지만 다음 작품을 통해 단순히 흐름선 나쁜거라 무시합니다.
data = pd.read_csv('file1.csv', error_bad_lines=False)
추악한 흐름선 유지하려면 한 종류의 해킹 처리하는 것이 뭔가 오류가 다음과 같습니다.
line = []
expected = []
saw = []
cont = True
while cont == True:
try:
data = pd.read_csv('file1.csv',skiprows=line)
cont = False
except Exception as e:
errortype = e.message.split('.')[0].strip()
if errortype == 'Error tokenizing data':
cerror = e.message.split(':')[1].strip().replace(',','')
nums = [n for n in cerror.split(' ') if str.isdigit(n)]
expected.append(int(nums[0]))
saw.append(int(nums[2]))
line.append(int(nums[1])-1)
else:
cerror = 'Unknown'
print 'Unknown Error - 222'
if line != []:
# Handle the errors however you want
내가 쓸 수 차례 스크립트입니다 흐름선 재장착하려면 다테프라임 꽂으십시오 이후 line& # 39, & # 39 변수에 의해 나쁜거라 흐름선 나옵니다. 위 코드입니다. Csv 판독기에서 사용하기만 하면 이 피할 수 있습니다. 향후 이 상황에 대처할 수 있는 개발자들이 쉽게 판다 기대해 본다.
내가 가진 것 없이 읽을 수 있는 것은 이 문제를 어디서 CSV 반군지역 열 이름.
df = pd.read_csv(filename, header=None)
나는 열 이름을 미리 지정된 후 목록에 이름을 바로 해결 및 정보기술 (it) ',' 전달하십시오 묶습니다. # 39 열 이름을 설정할 수 없는 경우, 그냥 don& 만들 수 있는 최대 열이 많은 자리표시자 이름으로 고객의 데이터.
col_names = ["col1", "col2", "col3", ...]
df = pd.read_csv(filename, names=col_names)
내가 잘못 때문에 일반적으로 발생했습니까 CSV Excel 에서 연 다음 구했잖아 거잖나. 비록 파일 확장자는 .csv 형식, CSV 는 여전히 순수한 그동안 변경됩니다.
도움이 되길 바란다.
저도 같은 문제를 접했어요. 동일한 소스 파일에 'pd.read_table()'을 사용하는 것이 작동하는 것처럼 보였습니다. 나는 이것에 대한 이유를 추적할 수 없었지만 그것은 나의 경우에 유용한 해결 방법이었어. 아마도 더 박식한 누군가가 왜 그것이 작동했는지 더 밝혀줄 수 있을 것이다.
편집: 파일에 실제 데이터와 동일한 형식이 아닌 텍스트가 있을 때 이 오류가 발생하는 것을 발견했습니다. 이것은 일반적으로 머리글 또는 바닥글 정보이며(한 줄 이상 크므로 skip_header가 작동하지 않음't) 실제 데이터와 같은 수의 쉼표로 구분되지 않습니다(read_csv 사용 시). read_table을 사용하면 탭을 구분 기호로 사용하여 사용자의 현재 오류를 우회하지만 다른 오류를 도입할 수 있습니다.
나는 보통 파일에 여분의 데이터를 읽고 read_csv() 방법을 사용함으로써 이것을 해결한다.
정확한 해결책은 실제 파일에 따라 다를 수 있지만, 이 방법은 여러 경우에 효과가 있었습니다.
1115794 4218 "k__Bacteria", "p__Firmicutes", "c__Bacilli", "o__Bacillales", "f__Bacillaceae", ""
1144102 3180 "k__Bacteria", "p__Firmicutes", "c__Bacilli", "o__Bacillales", "f__Bacillaceae", "g__Bacillus", ""
368444 2328 "k__Bacteria", "p__Bacteroidetes", "c__Bacteroidia", "o__Bacteroidales", "f__Bacteroidaceae", "g__Bacteroides", ""
import pandas as pd
# Same error for read_table
counts = pd.read_csv(path_counts, sep='\t', index_col=2, header=None, engine = 'c')
pandas.io.common.CParserError: Error tokenizing data. C error: out of memory
이 있다고 캜 구문 분석 엔진 (디스크입니다. 기본값입니다) 한 관련이 있다. 아마 어떤 것도 변화시킬 수 있는 한, 파이썬 변경됩니까 < br>.
counts = pd.read_table(path_counts, sep='\t', index_col=2, header=None, engine='python')
Segmentation fault (core dumped)
바로 그것이 다른 error.< br>; 만약 우리가 박으래도 지루려면 시도하시겠습니까 공백을 테이블에서 파이썬 engine 변경 및 오류 다시 한 번:
1115794 4218 "k__Bacteria","p__Firmicutes","c__Bacilli","o__Bacillales","f__Bacillaceae",""
1144102 3180 "k__Bacteria","p__Firmicutes","c__Bacilli","o__Bacillales","f__Bacillaceae","g__Bacillus",""
368444 2328 "k__Bacteria","p__Bacteroidetes","c__Bacteroidia","o__Bacteroidales","f__Bacteroidaceae","g__Bacteroides",""
_csv.Error: ' ' expected after '"'
문제가 있는 것은 우리의 행뿐만 구문 분석 및 it gets 선택해제합니다 판다. 내가 필요한 모든 공간 및 파이썬 engine 분석할 수 있는 테이블을 지루려면 인용 테이블 신청했다. 한편 캜 engine 포함 추락한 있는 쉼표는 행뿐만 지켰다. < br>; < br>; 내가 가진 새 파일을 생기지 않도록 교체품을 이런게야 내 테이블 등 작다. < br>;
from io import StringIO
with open(path_counts) as f:
input = StringIO(f.read().replace('", ""', '').replace('"', '').replace(', ', ',').replace('\0',''))
counts = pd.read_table(input, sep='\t', index_col=2, header=None, engine='python')
다음과 같은 순서로 작동됨 명령 (I 손실됩니다 첫 줄의 데이터 (= 없음 - 아니 헤더입니다 χ02 있지만, 적어도 이 로드되는지):
df = pd.read_csv (파일_이름, ' 우스콜스 = 범위 (0, 42)) 드프스콜럼너스 = [& # 39, YR& # 39, & # 39, MO& # 39, & # 39, DAY& # 39, & # 39, HR& # 39, & # 39, MIN& # 39, & # 39, & # 39, HUND& SEC& # 39, # 39;;
& # 39, W11& # 39, & # 39, S11& # 39, & # 39, W12& # 39, & # 39, S12& # 39, & # 39, W13& # 39, & # 39, & # 39, # 39 W14& S13& # 39;;;] '
다음과 같은 작동하지 않습니다.
df = pd.read_csv (파일_이름, ' 이름 = [& # 39, YR& # 39, & # 39, MO& # 39, & # 39, DAY& # 39, & # 39, HR& # 39, & # 39, MIN& # 39, & # 39, & # 39, HUND& SEC& # 39, # 39;;
& # 39, W11& # 39, & # 39, S11& # 39, & # 39, W12& # 39, & # 39, S12& # 39, & # 39, W13& # 39, & # 39, & # 39, # 39 W14& S13& # 39;;;] 우스콜스 = 범위 (0, 42)) '
스파서에로: 토큰 화 데이터 오류. 캜 오류: 걱정했던것 53 필드에 1605634 54 선 · 표면탄성파 (saw) 다음과 같은 작동하지 않습니다.
df = pd.read_csv (파일_이름, ' 헤더입니다 = 없음) '
스파서에로: 토큰 화 데이터 오류. 캜 오류: 걱정했던것 53 필드에 1605634 54 선 · 표면탄성파 (saw)
따라서 이 문제를 전달하십시오 우스콜스 = 범위 (0, 2) '' 합니다.
사용 'pandas.read_csv (& # 39, CSVFILENAME& # 39, & # 39, & # 39, 9월 = 헤더입니다 = 없음;;)'
csv 데이터 링크를 통해 읽을 수 있도록 할 때
http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data
난 내 데이터 복사됨 사이트에서 agent. 치프필레. 그래서 & # 39, & # 39 이 공백 = 9월 사용되는 했다. 또한 협력했습니다:)
나는 유용할 수 있는 대안이 비슷한 문제를 다루는 모듈을 사용하여 구문 분석 오류뿐만 CSV 에 데이터를 재지정할 df 판다. 예를 들면 다음과 같습니다.
import csv
import pandas as pd
path = 'C:/FileLocation/'
file = 'filename.csv'
f = open(path+file,'rt')
reader = csv.reader(f)
#once contents are available, I then put them in a list
csv_list = []
for l in reader:
csv_list.append(l)
f.close()
#now pandas has no problem getting into a df
df = pd.DataFrame(csv_list)
다운로드합니까 CSV 파일 등) 로 잘못 포맷됩니다 모듈을 좀 더 강력한 쉼표로 구분된 이 라우트를 문제를 해결하기 위해 이 같은 성공을 거둘 수 없었을 것이다.
가끔 파이썬 갖추고 있지만, 원시 데이터를 사용하는 방법에 문제가 아니다. 내가 맡을게 오류 메시지
Error tokenizing data. C error: Expected 18 fields in line 72, saw 19.
가끔 쉼표 설명스크립트 열 것으로 드러나 있었다. 즉, CSV 파일 클리닝해야 백업하도록 또는 다른 사용되는 분리자의.
비슷한 사람들을 위한 파이썬 3 에 리눅스 운용체계 (os) 문제를 겪고 있다.
pandas.errors.ParserError: Error tokenizing data. C error: Calling
read(nbytes) on source failed. Try engine='python'.
종료기:
df.read_csv('file.csv', encoding='utf8', engine='python')
내가 봐도 알 수 있고, 멀리는 이수한 뒤 해당 파일, 문제는 # 39, csv 파일 you& re 로드하려고 시도할 복수의 표. 표 제목에 포함된 줄을 선 또는 비어 있습니다. 가지고 시도하시겠습니까 이걸봐 [스택 오버플로 오토메이티드] (https://stackoverflow.com/questions/34184841/python-pandas-read-csv-file-containing-multiple-tables # 34188535 오토메이티드). 이 프로그램을 통해 얻을 수 있는 방법을 보여줍니다.
이를 사용하여 다른 동적임 외곽진입 약간만이라도 [csv 모듈에서는] (https://docs.python.org/3/library/csv.html), read 모든 단일 행일 추론할 수 있는 경우 한 번에 저회가 정신 점검 / 정규 표현식, 행 (제목 / 헤더입니다 / 가치 / 빈). 한 번 더 할 수 있는 장점이 있습니다 이 방법을 통해 데이터를 파이썬 객체에는 분할합니다 / 덮어쓰기/추가 / 수집하십시오 원하는 대로.
모든 기능을 사용할 수 있는 가장 쉬운 약간만이라도 pd.read_clipboard 수동으로로 선택 및 복사 후 '판다 ()' 이 테이블을 클립보드가, csv excel 에서 열 수 있는 경우 또는 무언가.
또한, , 아무도 이 문제에 대한 산정하지만 브라운아저씨의 언급하십시오 무관하지 않다. 전 그 때 이 같은 문제로 로드중 등 일부 데이터세트를 ['seeds_dataset.txt'] (http://archive.ics.uci.edu/ml/datasets/seeds) 에서 자전거. 제 경우에는 오류 발생 공백 때문에 진정한 탭 '구분' 보다 더 많았던 일부 \t. 지켜보리니 다음과 같은 예를 들어 3 호선
"' 14.38 14.21 0.8951 5.386 3.312 2.462 4.956 1 14.69 14.49 0.8799 5.563 3.259 3.586 5.219 1 14.11 14.1 0.8911 5.42 3.302 2.7 5 1 "' 따라서 '' 를 사용하여 \t+ seperator 패턴 대신에 '\t'. "'파이썬 데이터 = pd.read_csv (& # 39, 경로, 9월 = \t+ '헤더입니다 = 없음) "'