Python pandas to_excel'utf8'编解码器无法解码字节
我正在尝试在Pythonpandas中做一些数据工作,并且无法写出我的结果。 我读取我的数据作为一个CSV文件,并导出每个脚本,因为它是自己的CSV文件,工作正常。 最近虽然我已经尝试导出1 Excel文件中的所有工作表和一些表单给我一个错误
“'utf8'编解码器无法解码位置1中的字节0xe9:无效的继续字节”
我不知道如何甚至开始find任何可能导致出口到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()
打印头的问题dataframe
Event ID Constituent ID Email Address First Name \ Last Name f 1 AA 1 F 4 LRC M 1 1 AD F 4 AAG M 2 0 RG M 3 OOH M 2 TEH M 2 AAH M 2 MMK F 3 JEK 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表格,我确实得到了部分打印出来。 名字栏中的任何内容都是空白的,但是事件,组件和电子邮件都是打印的。
编辑:试图阅读csv作为utf8失败,但阅读它作为拉丁文的作品。 有没有办法指定to_excel编码? 或解码和编码我的dataframe到UTF8?
pipe理解决这个问题。
我做了一个函数,通过我的列有string,并设法解码/编码为utf8,现在它的作品。
def changeencode(data, cols): for col in cols: data[col] = data[col].str.decode('iso-8859-1').str.encode('utf-8') return data
在我的情况下,问题是我最初阅读错误的编码( ASCII
代替cp1252
)的CSV文件。 因此,pandas在试图将其写入Excel文件时,发现一些字符无法解码。
我在读取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
你可以克隆它,并从源代码构buildpandas; 这个问题几乎解决了,它的工作原理就像
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()
干杯
豪尔赫Tornero
我一直在得到同样的错误,并且在所有的build议中,唯一对我有效的是:
data = pd.read_csv('Filename.csv', encoding='cp1252')
非常感谢你!