Pandas DataFrame的重音字符在Excel中出现乱码

问题描述 投票:5回答:4

附:

# -*- coding: utf-8 -*-

在我的.ipynb顶部,Jupyter现在正确显示重音字符。

当我导出到csv(使用.to_csv())包含重音字符的pandas数据框时:

enter image description here

...在Excel中打开csv时,字符无法正确呈现。

enter image description here

无论我是否设置了encoding='utf-8'都是如此。 pandas / python是否可以在这里完成所有这些,这是一个Excel问题?或者可以在导出到csv之前完成某些事情?

  • Python:2.7.10
  • 熊猫:0.17.1
  • Excel:Excel for Mac 2011
python excel csv pandas non-ascii-characters
4个回答
3
投票

如果你想保留重音,请尝试使用encoding ='iso-8859-1'

df.to_csv(path,encoding='iso-8859-1',sep=';')

2
投票

我也有同样的不便。当我检查Jupyter笔记本中的Dataframe时,我发现一切都井然有序。

当我尝试直接打开文件时会出现问题(因为它有.csv扩展名,Excel可以直接打开它)。

我的解决方案是打开一个新的空白excel工作簿,并从“数据”选项卡导入文件,如下所示:

  • 导入外部数据
  • 从文本导入数据
  • 我选择了这个文件
  • 在导入向导窗口中,在下拉列表中显示“文件原点”,我选择了“65001:Unicode(utf-8)”

然后我只选择正确的分隔符,这就是我的意思。


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

1
投票

我认为使用不同的excel作家会有所帮助,推荐xlsxwriter

import pandas as pd
df = ...
writer = pd.ExcelWriter('file.xlsx', engine='xlsxwriter')
df.to_excel(writer)
writer.save()

1
投票

我也有类似的问题,也在Mac上。我注意到当我在TextEdit中打开csv时,unicode字符串显示正常,但是当我在Excel中打开时出现乱码。

因此,我不认为有任何方法使用to_csv成功将unicode导出到Excel,但我希望默认的to_excel编写器就足够了。

df.to_excel('file.xlsx', encoding='utf-8')
© www.soinside.com 2019 - 2024. All rights reserved.