Python中H2O DataFrame的中文文本

时间:2018-12-20 06:50:06

标签: python dataframe h2o

我有一个带有中文文本的utf-8编码的csv文件。当我尝试导入为h2o数据框时,数据显示为乱码。

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

在结果数据框中,列名是正确的,但不是中文文本,而是显示如下文本:

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

我查看了h2o文档,似乎没有任何方法可以像使用import_file那样在pandas中设置编码选项。此外,运行以下命令时:

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>

基于此错误,似乎h2o正在使用cp1252编码。有人可以提供帮助让h2o用中文以utf-8编码导入csv文件吗?谢谢。

1 个答案:

答案 0 :(得分:0)

注释中的jira票证已解决,并且此解析问题不再是较新版本的H2O的问题。我的建议是升级-例如,如果您升级到最新版本的H2O,则应该没有任何问题。

我用您的示例对3.22.0.2版进行了测试,并得到:

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

[3 rows x 1 column]