Китайский текст для H2O DataFrame в Python - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть CSV-файл в кодировке utf-8 с китайским текстом.Когда я попытался импортировать данные в виде h2o-фрейма, данные неправильно отображаются как бессмысленные.

 dataframe = h2o.import_file('test.csv')

В результирующем фрейме данных имена столбцов правильные, но вместо текста на китайском языке он отображает текст, подобный следующему:

 在ç�¡è¦ºäº†ä½ 知é�

Я изучил документацию по h2o, и, похоже, нет никакого способа установить параметр кодирования, как в pandas, при использовании import_file.Кроме того, при выполнении следующего:

testing = ['你','好','嗎']
h2o.H2OFrame(testing)

выдает эту ошибку:

--------------------------------------------------------------------------
 UnicodeEncodeError                        Traceback (most recent call last)
<ipython-input-2-5f4b3eb49a84> in <module>
      1 testing = ['你','好','嗎']
----> 2 h2o.H2OFrame(testing)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\h2o\frame.py in __init__(self, python_obj, destination_frame, header, separator, column_names, column_types, na_strings, skipped_columns)
    104         if python_obj is not None:
    105             self._upload_python_object(python_obj, 
destination_frame, header, separator,
--> 106                                        column_names, 
column_types, na_strings, skipped_columns)
    107 
    108     @staticmethod

~\AppData\Local\Continuum\anaconda3\lib\site-packages\h2o\frame.py in _upload_python_object(self, python_obj, destination_frame, header, separator, column_names, column_types, na_strings, skipped_columns)
    143             csv_writer.writerow([row.get(k, None) for k in col_header])
    144         else:
--> 145             csv_writer.writerows(data_to_write)
    146         tmp_file.close()  # close the streams
    147         self._upload_parse(tmp_path, destination_frame, 1, 
separator, column_names, column_types, na_strings, skipped_columns)

~\AppData\Local\Continuum\anaconda3\lib\encodings\cp1252.py in encode(self, input, final)
     17 class IncrementalEncoder(codecs.IncrementalEncoder):
     18     def encode(self, input, final=False):
---> 19         return codecs.charmap_encode(input,self.errors,encoding_table)[0]
     20 
     21 class IncrementalDecoder(codecs.IncrementalDecoder):

UnicodeEncodeError: 'charmap' codec can't encode character '\u4f60' in position 1: character maps to <undefined>

Исходя из этой ошибки, кажется, что кодировка cp1252 используется h2o.Может кто-нибудь предложить помощь, чтобы h2o импортировал файл csv с китайским языком в кодировке utf-8?Спасибо.

1 Ответ

0 голосов
/ 02 января 2019

Разрешение jira в комментариях устранено, и эта проблема с синтаксическим анализом больше не возникает в более новой версии H2O.Я бы рекомендовал обновить - например, если вы обновитесь до последней версии H2O, у вас не должно быть проблем.

Я провел тест с версией 3.22.0.2 на вашем примере и получил:

In [6]: h2o.H2OFrame(testing)
Parse progress: |█████████████████████████████████████████████████████████████████████████████| 100%
Out[6]:
C1
----
你
好
嗎

[3 rows x 1 column]
...