有一个数据框
userid movie
1 hh泰坦尼克号
2 Hungary Game 饥饿游戏
电影名称包含中文
userID
的类型为int64
,movie
的类型为str
。
我使用方法pd.Series(df.movie.values,index=df.userid).to_dict()
将dataframe
转换为dict
。然后我打印dict
,中文字符显示如下\xe8\x8b\xb1\xe9\x80\x9f\xe4\xba\x9a\xe4\xb8\xa4\xe5\x8e\xa2\xe6\xac\xa7\xe5\xae\x9d
。我在文件中使用utf-8
,并且dataframe
中正常显示中文字符。
帮助请
答案 0 :(得分:0)
您可以导入JSON模块,然后:
print json.dumps(a, ensure_ascii = False, encoding = "UTF-8")
答案 1 :(得分:0)
实际上,此问题与json
或pandas
或dataframe
或vim
或其他任何内容之间没有任何关系。
显示未使用ascii
编码的字符只是一个问题。
只有在使用Python2而不是Python3时才会发生。
您可以在Python2中确认:
a = {1: "泰坦尼克号"}
print a
# {1: '\xe6\xb3\xb0\xe5\x9d\xa6\xe5\xb0\xbc\xe5\x85\x8b\xe5\x8f\xb7'}
但您仍然可以通过以下方式正常打印:
print a[1]
# 泰坦尼克号
问题是dict
如何在Python2中处理__str__
或__repr__
。
使用json
的解决方案是使用dict
编码将整个str
转换为utf-8
,这样就可以了。