【问题标题】:unicode in panda dataframe messed up when opened in excel在 excel 中打开时,熊猫数据框中的 unicode 搞砸了
【发布时间】:2015-07-20 13:37:37
【问题描述】:

我正在尝试制作一个“结果”数据框,其中每个单元格中的计算值及其不确定性用 ± 符号分隔。然后我将数据框保存到 csv。 我制作了下面的示例来说明问题:当我使用 textedit 打开 csv(或将其打印到屏幕上)时,一切正常。但是,当我在 excel 中打开(或导入)csv 时,± 符号会突然出现另一个符号:Â.

我尝试使用“str()”将变量强制为字符串,并使用“encoding='utf-8'”,但我似乎无法弄清楚这里出了什么问题.. 我在 macbook air 上使用 Python2.7 和 Komodo。

import os
import pandas as pd

PmSign = (u'\u00B1').encode("utf-8")

columns = ['A']
data = [1,2,3,4,'5 {} 3' .format(PmSign),6]

df = pd.DataFrame(data, columns=columns)

df.to_csv(os.path.join('/Users/python/','UnicodeDFTEST.csv'), encoding='utf-8')

【问题讨论】:

  • 您确定 Excel 知道该文件是 UTF-8 吗?当您导入文件时,应该有一个下拉菜单显示“文件来源”或类似的内容。确保将其设置为 UTF。 (More info)

标签: python excel csv pandas unicode


【解决方案1】:

尝试以下方法:

import os
import pandas as pd

PmSign = (u'\u00B1')

columns = ['A']
data = [1, 2, 3, 4, u'5 {} 3'.format(PmSign), 6]

df = pd.DataFrame(data, columns=columns)
writer = pd.ExcelWriter(os.path.join('/Users/python/','UnicodeDFTEST.xlsx')
df.to_excel(excel_writer=writer, sheet_name="Sheet 1")
writer.save()

【讨论】:

  • 酷!我确实看过,但无法让它工作..谢谢!
  • 太好了,很高兴它成功了。请注意在数据行中添加了“u”。
【解决方案2】:

正如@Wander Nauta 提到的,有一个File origin 设置。您需要使用文本导入向导。请尝试以下操作:

  1. 启动 Microsoft Excel。
  2. 打开一个空白工作簿。
  3. 选择顶部的DATA 标签。
  4. From Text 按钮。
  5. 选择您的UnicodeDFTEST.csv 文件。
  6. File origin 下,从长下拉列表中选择65001: Unicode (UTF-8)
  7. Next >
  8. 确保使用了正确的分隔符。

【讨论】:

  • 感谢您的建议,但如果我这样做,± 符号会完全消失。另外,我希望有一个 Python 修复程序,这样我就可以复制 csv 文件来打开(这更容易/更快)。目前我这样做,然后用一个有效但有点愚蠢的空格替换额外的符号。
  • 您可以考虑使用不同的 Python 库直接以 xlsx 格式编写文件,从而避免任何可能的 CSV 转换问题。我还没有尝试过使用 UTF-8 格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 1970-01-01
相关资源
最近更新 更多