使用:
# -*- coding: utf-8 -*-
在我的.ipynb顶部,Jupyter现在正确显示重音字符。
当我导出到csv(包含.to_csv()
)包含重音字符的pandas
数据框时:
...在Excel中打开csv时,字符无法正确呈现。
我是否设置encoding='utf-8'
是这种情况。 pandas / python是否可以在这里完成所有这些,这是一个Excel问题?或者可以在导出到csv之前完成某些事情?
答案 0 :(得分:3)
如果您想保留重音,请尝试使用encoding ='iso-8859-1'
df.to_csv(path,encoding='iso-8859-1',sep=';')
答案 1 :(得分:2)
我也有同样的不便。当我在Jupyter笔记本中检查Dataframe时,我看到一切都井然有序。
当我尝试直接打开文件时会发生问题(因为它具有.csv扩展名,Excel可以直接打开它)。
对我来说,解决方案是打开一个新的空白excel工作簿,然后从“数据”标签导入文件,如下所示:
然后我只选择正确的定界符,对我来说就是这样。
答案 2 :(得分:1)
如果您无法让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
答案 3 :(得分:1)
我认为使用不同的Excel作者会有所帮助,推荐xlsxwriter
import pandas as pd
df = ...
writer = pd.ExcelWriter('file.xlsx', engine='xlsxwriter')
df.to_excel(writer)
writer.save()
答案 4 :(得分:1)
我在Mac上也有类似的问题。我注意到在TextEdit中打开csv时,unicode字符串显示正常,但是在Excel中打开时,则显示乱码。
因此,我认为没有任何方法可以使用to_csv
成功地将unicode导出到Excel,但是我希望默认的to_excel
编写器就足够了。
df.to_excel('file.xlsx', encoding='utf-8')
答案 5 :(得分:1)
在尝试clearinterval(ballTimer);
后跟read_json
时遇到类似的问题:
to_excel
结果是,如果我先使用df = pandas.read_json(myfilepath)
# causes garbled characters
df.to_excel(sheetpath, encoding='utf8')
# also causes garbled characters
df.to_excel(sheetpath, encoding='latin1')
模块手动加载json,然后使用json
导出,则不会发生此问题:
to_excel
答案 6 :(得分:0)
我遇到了同样的问题,写入.xlsx并重命名为.csv并不能解决问题(出于特定于应用程序的原因,我将不在此处介绍),也无法成功使用其他编码正如朱莉安娜·里维拉(Juliana Rivera)推荐的那样。 “手动”将数据写为文本对我有用。
with open(RESULT_FP + '.csv', 'w+') as rf:
for row in output:
row = ','.join(list(map(str, row))) + '\n'
rf.write(row)
有时候,我想您只需要回到基础知识上即可。