UnicodeEncodeError: кодек «ascii» не может кодировать символы в позиции 0-9: порядковый номер не в диапазоне (128) - PullRequest
0 голосов
/ 05 ноября 2018

При написании этого кода:

df['new'] = df.astype(str).apply(' '.join, axis=1)

это вызвало это:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)

ДФ содержит греческие символы.

Прочитав о кодировании в похожих вопросах, я не смог применить его к этой ситуации и сделал это с:

import sys
reload(sys)
sys.setdefaultencoding('utf8')

Хотя это сработало. Все не поддерживают использование этого. Поскольку это может привести к ошибкам позже, я хотел бы посмотреть, что вы предлагаете в этом конкретном случае.

Данные импортируются следующим образом: DataFrame.from_records https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.from_records.html, поэтому он не может принять кодировку в качестве параметра.

1 Ответ

0 голосов
/ 05 ноября 2018

Попробуйте просто закодировать строку:

df['new'] = df.astype(str).apply(' '.join, axis=1).encode("utf-8")

и добавьте это вверху вашего кода

# -*- coding: utf-8 -*-
...