因为我能够使用'utf-8'编码使用to_csv保存字符串,所以我希望能够使用to_excel来做同样的事情。这对我来说不是编码问题。我之前看过的帖子都没有,讨论过这个问题。
我在Windows 7(Anaconda)和pandas 0.18.1
上使用python 2.7.12我有两个问题涉及将包含特殊字符(编码为'utf-8')的熊猫数据帧保存为.csv或.xlsx文件。
例如:
import pandas as pd
# Create a Pandas dataframe from the data.
df = pd.DataFrame({'Data': ['1', 'as', '?%','ä']})
我可以将数据框保存为.cvs文件而不会出现任何问题:
df.to_csv('test_csv.csv',sep=',', encoding='utf-8')
它有效。导入数据时,我需要在Excel中选择“utf-8”,一切都很好。
现在,如果我尝试将相同的数据帧保存为.xlsx,那么它就不起作用了。
我有以下代码:
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter', options={'encoding':'utf-8'})
# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1',encoding='utf-8')
writer.save()
我收到以下错误消息:
UnicodeDecodeError:'ascii'编解码器无法将字节0xc3解码到位 7:序数不在范围内(128)
我并非100%确定使用正确的选项来设置编码:
options={'encoding':'utf-8'}
和
encoding='utf-8'
因为我不清楚如何从文档中继续。
知道如何运作吗?
与df.to_csv相关的奖金问题。有没有办法使用一些特殊字符作为分隔符?有些原因,我从R迁移到python的代码是使用sep ='¤'。试图以所有可能的方式编码这个特殊字符,但总是失败。有可能吗?
非常感谢
干杯
法比安
答案 0 :(得分:0)
如果您使用xlsxwriter
作为Excel编写引擎,则忽略encoding='utf-8'
,因为XlsxWriter模块不使用它。
XlsxWriter要求字符串数据编码为utf8
。之后它会自动处理字符串。
因此,您需要确保您正在编写的字符串数据通过Pandas编码为utf8
:在您阅读时或在数据在数据框中之后。