Python panders to_excel 'utf8' 코덱이 바이트를 디코딩할 수 없음
Python panda에서 데이터 작업을 하려고 하는데 결과를 작성하는 데 어려움을 겪고 있습니다.데이터를 CSV 파일로 읽고 각 스크립트를 정상적으로 작동하는 고유한 CSV 파일로 내보냈습니다.최근에 워크시트와 함께 엑셀 파일 1개에 있는 모든 것을 내보내려고 했지만 몇 개의 시트에서 오류가 발생했습니다.
"utf8" 코덱이 위치 1에서 0xe9 바이트를 디코딩할 수 없음: 잘못된 연속 바이트"
엑셀로 내보내는 데 문제가 될 만한 캐릭터를 어떻게 찾아야 할지 모르겠습니다.그런데 왜 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
엑셀 시트를 보면 실제로 부분적으로 인쇄가 됩니다.이름 열과 그 이상의 항목은 비어 있지만 이벤트, 구성 요소 및 전자 메일은 모두 인쇄됩니다.
edit: utf8에서 csv를 읽으려고 하면 실패하지만 latin1처럼 읽습니다.to_excel 인코딩을 지정하는 방법이 있습니까?아니면 내 데이터 프레임을 utf8로 디코딩하고 인코딩합니까?
이 문제를 해결했습니다.
문자열이 있는 열을 통과하는 함수를 만들어 utf8로 디코딩/인코딩을 수행했고 이제 작동합니다.
def changeencode(data, cols):
for col in cols:
data[col] = data[col].str.decode('iso-8859-1').str.encode('utf-8')
return data
저의 경우, 처음에 잘못된 인코딩으로 CSV 파일을 읽고 있었던 것이 문제였습니다.ASCII
대신에cp1252
그래서 판다들이 엑셀 파일로 쓰려고 했을 때, 그것은 해독할 수 없는 문자들을 발견했습니다.
CSV 파일을 읽을 때 올바른 인코딩을 지정하여 해결했습니다.
data = pd.read_csv(fname, encoding='cp1252')
실제로 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()
가장 간단한 것은 데이터 프레임을 utf-8에 로드하는 것입니다.그러면 ExcelWriter로 문제를 해결할 수 있습니다.
data = pd.read_csv(path,encoding='utf-8')
언제 출시될지는 모르지만 내 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()
건배.
호르헤 토르네로
@Zenadix가 말한 것과 유사하게, 의 csvs를 UTF-8로 읽는 것은 ExcelWriter가 오류 없이 쓸 수 있도록 했습니다.
df = pd.read_csv('path', encoding='utf-8')
...
with pd.ExcelWriter('new_path') as writer:
df.to_excel(writer, sheet_name='Foo')
언급URL : https://stackoverflow.com/questions/18645401/python-pandas-to-excel-utf8-codec-cant-decode-byte
'programing' 카테고리의 다른 글
장고 템플릿에서 현재 연도를 표시하는 방법은 무엇입니까? (0) | 2023.06.27 |
---|---|
이달의 두 자리 숫자 얻기 (0) | 2023.06.27 |
Vue 구성 요소가 두 번 파괴됨 (0) | 2023.06.27 |
VBA를 통해 어레이 공식 삽입 (0) | 2023.06.27 |
Python 스크립트에서 POST를 사용하여 파일 전송 (0) | 2023.06.27 |