如何使用pandas to_exel在.xlsx中以'utf-8'格式保存string(to_csv可以将其保存为.csv)
因为我可以使用'utf-8'编码使用to_csv保存string,所以我希望能够使用to_excel做同样的事情。 在编码方面,这不是我的问题。 我之前看到的线索都没有讨论这个问题。
我在Windows 7(Anaconda)和pandas0.18.1上使用python 2.7.12
我有两个与保存包含特殊字符(编码为“utf-8”)的pandasdataframe相关的.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中select'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'编解码器无法解码位置7中的字节0xc3:序号不在范围内(128)
我不是100%确定使用正确的选项来设置编码:
options={'encoding':'utf-8'}
和
encoding='utf-8'
因为我不清楚如何从文档中进行操作。
任何想法如何有这个工作?
与df.to_csv相关的奖金问题。 有没有办法使用一些特殊的字符作为分隔符? 一些原因,我从R迁移到Python的代码是使用sep ='¤'。 试图用一切可能的方法来编码这个特殊字符,但总是失败。 有没有可能做到这一点?
非常感谢
干杯
法比恩
如果您使用xlsxwriter
作为Excel写入引擎,则encoding='utf-8'
被忽略,因为XlsxWriter模块不使用它。
XlsxWriter要求string数据编码为utf8
。 之后,它自动处理string。
所以你需要确保你正在编写的string数据通过Pandas编码为utf8
:读取它或者在dataframe之后。