附:
# -*- coding: utf-8 -*-
在我的.ipynb顶部,Jupyter现在正确显示重音字符。
当我导出到csv(使用.to_csv()
)包含重音字符的pandas
数据框时:
...在Excel中打开csv时,字符无法正确呈现。
无论我是否设置了encoding='utf-8'
都是如此。 pandas / python是否可以在这里完成所有这些,这是一个Excel问题?或者可以在导出到csv之前完成某些事情?
如果你想保留重音,请尝试使用encoding ='iso-8859-1'
df.to_csv(path,encoding='iso-8859-1',sep=';')
我也有同样的不便。当我检查Jupyter笔记本中的Dataframe时,我发现一切都井然有序。
当我尝试直接打开文件时会出现问题(因为它有.csv扩展名,Excel可以直接打开它)。
我的解决方案是打开一个新的空白excel工作簿,并从“数据”选项卡导入文件,如下所示:
然后我只选择正确的分隔符,这就是我的意思。
如果您无法让Excel合作,也许可以为您的列尝试此功能。它将使用unicodedata
库删除重音:
import unicodedata
def remove_accents(input_str):
if type(input_str) == unicode:
nfkd_form = unicodedata.normalize('NFKD', input_str)
return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])
else:
return input_str
我认为使用不同的excel作家会有所帮助,推荐xlsxwriter
import pandas as pd
df = ...
writer = pd.ExcelWriter('file.xlsx', engine='xlsxwriter')
df.to_excel(writer)
writer.save()
我也有类似的问题,也在Mac上。我注意到当我在TextEdit中打开csv时,unicode字符串显示正常,但是当我在Excel中打开时出现乱码。
因此,我不认为有任何方法使用to_csv
成功将unicode导出到Excel,但我希望默认的to_excel
编写器就足够了。
df.to_excel('file.xlsx', encoding='utf-8')