![](/img/trans.png)
[英]Chinese characters from pandas dataframe to CSV with Streamlit
[英]How to display Chinese characters inside a pandas dataframe?
我可以读取一个csv文件,其中有一列包含汉字(其他列是英文和数字)。 但是,汉字不能正确显示。 见下面的照片
我用pd.read_csv()
加载了 csv 文件。
display(data06_16)
或data06_16.head()
都不能正确显示汉字。
我尝试将以下行添加到我的.bash_profile
中:
export LC_ALL=zh_CN.UTF-8
export LANG=zh_CN.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
但这无济于事。
我还尝试将encoding
arg 添加到pd.read_csv()
:
pd.read_csv('data.csv', encoding='utf_8')
pd.read_csv('data.csv', encoding='utf_16')
pd.read_csv('data.csv', encoding='utf_32')
这些根本行不通。
如何正确显示汉字?
我只是记得源数据集是使用encoding='GBK'
创建encoding='GBK'
,所以我再次尝试使用
data06_16 = pd.read_csv("../data/stocks1542monthly.csv", encoding="GBK")
现在,我可以看到所有的汉字。
多谢你们!
我在这里看到三个可能的问题:
1)您可以尝试以下方法:
import codecs
x = codecs.open("testdata.csv", "r", "utf-8")
2)从理论上讲,另一种可能性是:
import pandas as pd
df = pd.DataFrame(pd.read_csv('testdata.csv',encoding='utf-8'))
3)也许您应该在使用Python导入之前将csv文件转换为utf-8(例如在Notepad ++中)? 当然,它可以是一次性导入的解决方案,而不是自动处理的解决方案。
尝试这个
df = pd.read_csv(path, engine='python', encoding='utf-8-sig')
你加载一个数据集,你有一些奇怪的字符。 例子:
'戴森美å 'é€\\xa0型器完整版套装Dyson Airwrap HS01(铜é‡'色礼ç›'版)'
就我而言,我知道奇怪的字符是中国人。 因此,我可以确定向我发送数据的人已将其编码为 utf-8,但应该使用“ISO-8859-1”进行编码。
所以第一步,我对字符串进行了编码,然后用 utf-8 解码。 所以我的台词是:
_encoding = 'ISO-8859-1'
_my_str.encode(_encoding, 'ignore').decode("utf-8", 'ignore')
然后我的输出是:
“‘森戴森 Airwrap HS01礼’”
这对我有用,但我想我并没有很好地理解引擎盖。 因此,如果您有更多信息,请随时告诉我。
奖金。 我会尝试检测 str 何时处于第一个奇怪的格式,因为我的一些条目是中文的,但其他的是英文的
编辑:奖金是没用的。 我只是在 ma 列上使用 lamba 进行编码和解码,而不关心格式。 所以我在加载数据框后更改了编码
_encoding = 'ISO-8859-1'
_decoding = "utf-8"
df[col] = df[col].apply(lambda x : x.encode(_encoding, 'ignore').decode(_decoding , 'ignore'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.