打印带有 Unicode 字符的 Pandas 列

3 投票
1 回答
6816 浏览
提问于 2025-04-18 02:21

我有一个 pandas 数据框,里面有一列是用 Unicode 编码的名字。

import pandas as pd

no_unicode = pd.Series(['Steve', 'Jason', 'Jake'])
yes_unicode = pd.Series(['tea', 'caf\xe9', 'beer'])

var_names = dict(no_unicode = no_unicode, yes_unicode = yes_unicode)

df = pd.DataFrame(var_names)

print(df)

我在 ipython 中可以正常打印这个数据框,但在 Sublimetext(使用 Python 3)中打印时却出错了。

错误信息:UnicodeEncodeError: 'ascii' 编码无法在位置 73 编码字符 '\xe9':序号不在范围内(128)

我到处寻找解决办法(在这个过程中也学到了很多关于 Unicode 的知识),但就是不知道怎么在 Sublimetext 中打印这个数据框。

任何帮助都将非常感谢。

1 个回答

3

里,有一个非常有用的函数u,可以把你的值转换成unicode格式。

In [26]:
import pandas as pd
from pandas.compat import u
no_unicode = pd.Series(['Steve', 'Jason', 'Jake'])
#yes_unicode = pd.Series(['tea', 'caf\xe9', 'beer'])
yes_unicode = pd.Series(map(u,['tea', 'caf\xe9', 'beer']))
var_names = dict(no_unicode = no_unicode, yes_unicode = yes_unicode)
df = pd.DataFrame(var_names)
print(df)

  no_unicode yes_unicode
0      Steve         tea
1      Jason        café
2       Jake        beer

[3 rows x 2 columns]

撰写回答