我有以下问题,但我还没有找到解决方案。 我正在使用Python 2.7,我喜欢将Pandas系列导出到带有变音符号的excel文件中(“ä”,“ü”,“ü”)
e.g。对于Python 2.7:
#Python 2.7###############
# -*- coding: iso-8859-15 -*-
import pandas as pd
import csv
city = ['München', 'Nürnberg', 'Würzburg']
result = pd.Series(city)
result.to_csv(result.to_csv('Umlauts.csv', sep= ',' , encoding='iso-8859-15')
如果我用Excel打开它,它只适用于csv,即使结果在同一行和列中
0,München
1,Nürnberg
2,Würzburg
问题: 将此Series系列导出到Excel表格(如
)的解决方案是什么?A1 | A2
1 | München
2 | Nürnberg
3 | Würzburg
我可以转移此解决方案来创建名为'München.xls'的文件吗?
感谢您的帮助!
最佳
答案 0 :(得分:1)
Panads DataFrame.to_csv
不支持方言参数。您必须使用支持excel方言的csv模块。
Excel存在csv问题。使用UTF-8编码编写csv,并在文件内容前添加utf8 bom b"\0xEF\0xBB\0xBF"
。 Excel会很好地读取这个文件。
Excel 无法使用utf8编码保存 csv文件。即使你打开一个utf8 csv,然后按下保存而没有修改,excel会在iso-8859-15
中对其进行重新编码,并插入?
- s,其中unicode字符无法编码。
换句话说:使用excel编辑csv文件会导致数据丢失大部分时间!
答案 1 :(得分:1)
您应该覆盖sys
次设置并使用pandas.DataFrame.to_excel()
:
# Import modules
import sys
reload(sys)
sys.setdefaultencoding('UTF8')
import pandas as pd
# Your code
city = ['München', 'Nürnberg', 'Würzburg']
result = pd.Series(city)
# Transform Series to DataFrame in order to use to_excel()
d = result.to_frame()
# Specify writer
writer = pd.ExcelWriter('output.xlsx', options={'encoding':'utf-8'})
# Write the frame to excel
d.to_excel(writer,'Sheet1')
# Save the file
writer.save()
这应该有用。
答案 2 :(得分:0)
根据here,here和here的规定,导出到xls时可以使用其他引擎。
当其他解决方案不起作用时,这对我有用:
pip install XlsxWriter
import xlsxwriter
from pandas import ExcelWriter
writer = pd.ExcelWriter('file.xlsx', engine='xlsxwriter')
df.to_excel(writer,'Sheet1')
writer.save()
其中df
是您要导出的数据框。