Wiz*_*iel 18 python excel utf-8 pandas
我正在尝试在Python pandas中做一些数据工作,并且无法写出我的结果.我将我的数据作为CSV文件读取并导出每个脚本,因为它自己的CSV文件工作正常.最近虽然我已经尝试将所有内容导出到带有工作表的1个Excel文件中,但是一些工作表给我一个错误
"'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()
Run Code Online (Sandbox Code Playgroud)
打印数据帧的负责人
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
Run Code Online (Sandbox Code Playgroud)
看着excel表我确实得到了部分打印出来.名字列及其后的任何内容都是空白的,但事件,成分和电子邮件都是打印的.
编辑:尝试读取csv in utf8失败,但读取它作为latin1工作.有没有办法指定to_excel编码?或者将我的数据帧解码并编码为utf8?
Wiz*_*iel 21
管理解决这个问题.
我创建了一个功能,通过我的列有字符串,并设法解码/编码为utf8,现在它的工作原理.
def changeencode(data, cols):
for col in cols:
data[col] = data[col].str.decode('iso-8859-1').str.encode('utf-8')
return data
Run Code Online (Sandbox Code Playgroud)
Zen*_*dix 13
在我的情况下,问题是我最初使用错误的编码(而不是)读取 CSV文件.因此,当pandas尝试将其写入Excel文件时,它会发现一些无法解码的字符.ASCIIcp1252
我通过在读取CSV文件时指定正确的编码来解决它.
data = pd.read_csv(fname, encoding='cp1252')
Run Code Online (Sandbox Code Playgroud)
小智 5
实际上,有一种方法可以通过将参数传递给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()
Run Code Online (Sandbox Code Playgroud)