복붙노트

[PYTHON] Python pandas to_excel 'utf8'코덱에서 바이트를 디코딩 할 수 없습니다.

PYTHON

Python pandas to_excel 'utf8'코덱에서 바이트를 디코딩 할 수 없습니다.

파이썬 팬더에서 데이터 작업을하고 결과를 작성하는 데 어려움을 겪고 있습니다. 내 데이터를 CSV 파일로 읽었고 각 스크립트를 자체 CSV 파일로 내보내기 때문에 제대로 작동합니다. 최근에 워크 시트가있는 Excel 파일 1 개를 모두 내보내려고했지만 시트 중 일부가 오류를 발생시킵니다.

" 'utf8'코덱은 1 바이트 위치의 0xe9를 디코딩 할 수 없습니다. 연속 연속 바이트가 올바르지 않습니다."

Excel로 내보내기하는 데 문제가 될 수있는 문자를 찾기 시작하는 방법을 알지 못합니다. CSV로만 내보내는 이유는 확실하지 않지만

관련 선

from pandas import ExcelWriter
data = pd.read_csv(input)
writer = ExcelWriter(output) #output is just the filename
fundraisers.to_excel(writer, "fundraisers")
locations.to_excel(writer, "locations") #error
locations.to_csv(outputcsv) #works
writer.save()

문제가되는 데이터 프레임의 인쇄 헤드

Event ID    Constituent ID  Email Address   First Name  \   Last Name
f       1       A       A       1
F       4       L       R       C
M       1       1       A       D
F       4       A       A       G
M       2       0       R       G
M       3       O       O       H
M       2       T       E       H
M       2       A       A       H
M       2       M       M       K
F       3       J       E       K
Location ID raised  raised con  raised email
a   0   0   0
a   8   0   0
o   0   0   0
o   0   0   0
o   0   0   0
t   5   0   0
o   1   0   0
o   6   a   0
o   6   0   0
d   0   0   0

엑셀 시트를보고 실제로 부분 인쇄물을 얻습니다. 첫 번째 열과 그 이후의 항목은 모두 공백이지만 이벤트, 구성 요소 및 전자 메일이 모두 인쇄됩니다.

편집 : utf8로 csv를 읽으려고하면 실패하지만 latin1로 읽습니다. to_excel 인코딩을 지정하는 방법이 있습니까? 또는 내 데이터 프레임을 utf8로 디코딩하고 인코딩합니까?

해결법

  1. ==============================

    1.이 문제를 해결할 관리.

    이 문제를 해결할 관리.

    나는 문자열을 가지고 있으며 utf8로 디코드 / 인코딩 할 수있는 열을 통과하는 함수를 만들었고 이제는 작동합니다.

    def changeencode(data, cols):
        for col in cols:
            data[col] = data[col].str.decode('iso-8859-1').str.encode('utf-8')
        return data   
    
  2. ==============================

    2.필자의 경우 문제는 처음에 잘못된 인코딩 (cp1252 대신 ASCII)으로 CSV 파일을 읽는 것이 었습니다. 따라서 팬더가 Excel 파일에 쓰기를 시도 할 때 디코딩 할 수없는 문자가 발견되었습니다.

    필자의 경우 문제는 처음에 잘못된 인코딩 (cp1252 대신 ASCII)으로 CSV 파일을 읽는 것이 었습니다. 따라서 팬더가 Excel 파일에 쓰기를 시도 할 때 디코딩 할 수없는 문자가 발견되었습니다.

    CSV 파일을 읽을 때 올바른 인코딩을 지정하여 해결했습니다.

    data = pd.read_csv(fname, encoding='cp1252')
    
  3. ==============================

    3.사실 ExcelWriter에 매개 변수를 전달하여 utf8 인코딩을 강제 적용하는 방법이 있습니다.

    사실 ExcelWriter에 매개 변수를 전달하여 utf8 인코딩을 강제 적용하는 방법이 있습니다.

     ew = pandas.ExcelWriter('test.xlsx',options={'encoding':'utf-8'})
     sampleList = ['Miño', '1', '2', 'señora']
     dataframe = pandas.DataFrame(sampleList)
     dataframe.to_excel(ew)
     ew.save()
    
  4. ==============================

    4.가장 간단한 방법은 utf-8에서 데이터 프레임을로드하는 것입니다. 그럼 ExcelWriter 아무 문제가 그것을 저장합니다.

    가장 간단한 방법은 utf-8에서 데이터 프레임을로드하는 것입니다. 그럼 ExcelWriter 아무 문제가 그것을 저장합니다.

    data = pd.read_csv(path,encoding='utf-8')
    
  5. ==============================

    5.출시시기는 모르지만 github 저장소로 시도해 볼 수 있습니다.

    출시시기는 모르지만 github 저장소로 시도해 볼 수 있습니다.

    https://github.com/jtornero/pandas

    당신은 그것을 복제 할 수 있고 소스로부터 판다를 만들 수 있습니다; 문제는 거의 해결되고 작동합니다.

    sampleList = ['Miño', '1', '2', 'señora']
    dataframe = pandas.DataFrame(sampleList)
    ew = pandas.ExcelWriter('./test.xls', encoding='utf-8')
    dataframe.to_excel(ew)
    ew.save()
    

    건배

    호르헤 토로 네로

  6. ==============================

    6.나는 똑같은 오류를 계속해서 내게 일한 유일한 제안이었습니다.

    나는 똑같은 오류를 계속해서 내게 일한 유일한 제안이었습니다.

    data = pd.read_csv('Filename.csv', encoding='cp1252')
    

    고마워요!

  7. from https://stackoverflow.com/questions/18645401/python-pandas-to-excel-utf8-codec-cant-decode-byte by cc-by-sa and MIT license