Как отображать китайские иероглифы внутри фрейма данных pandas?

Я могу прочитать файл csv, в котором есть столбец, содержащий китайские иероглифы (другие столбцы - английские и цифры). Однако китайские иероглифы отображаются неправильно. см фото ниже

введите здесь описание изображения

Я загрузил файл csv с помощью pd.read_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')

Эти вообще не будут работать.

Как я могу правильно отображать китайские иероглифы?


person Daniel    schedule 03.09.2016    source источник
comment
Пробовали ли вы использовать кодеки для Chinese языков -- Скажите encoding='gb2312'?   -  person Nickil Maveli    schedule 03.09.2016
comment
Спасибо. Я попробовал предложенную вами кодировку, но вернул ошибку: UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 2-3: illegal multibyte sequence   -  person Daniel    schedule 04.09.2016


Ответы (3)


Я только что вспомнил, что исходный набор данных был создан с использованием encoding='GBK', поэтому я попытался еще раз, используя

data06_16 = pd.read_csv("../data/stocks1542monthly.csv", encoding="GBK")

Теперь я вижу все китайские иероглифы.

Спасибо, парни!

person Daniel    schedule 03.09.2016

Я вижу здесь три возможных проблемы:

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) Может быть, вам следует преобразовать файл csv в utf-8 перед импортом с помощью Python (например, в Notepad++)? Это может быть решение для одноразового импорта, а не для автоматического процесса, конечно.

person vlad.rad    schedule 03.09.2016

Попробуй это

df = pd.read_csv(path, engine='python', encoding='utf-8-sig')
person blacksheep    schedule 20.03.2019