Python Pandas 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

解决方法

我试图在Python熊猫中做一些数据工作,但写出我的结果时遇到麻烦。我将数据读取为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()

违规数据框的打印头

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

看着Excel表,我实际上得到了部分打印。“名字”列及其后的所有内容均为空白,但事件,组成部分和电子邮件均已打印。

编辑:尝试以utf8的形式读取csv失败,但以latin1的形式读取它。有没有一种方法可以指定to_excel编码?还是将我的数据帧解码并编码为utf8?