如何将H2OFrame中的一列转换为Python列表?

8
我已经阅读了H2O.ai的PythonBooklet.pdf和python API documentation,但仍然找不到一种清晰的方法来完成此操作。我知道我可以执行以下操作之一:
  • 将H2OFrame转换为Spark DataFrame并执行flatMap+collectcollect+列表推导。
  • 使用H2O的get_frame_data,它给我一个由头部和数据用\n分隔的字符串;然后将其转换为列表(在我的情况下是数字列表)。
有更好的方法吗?谢谢。
3个回答

9
你可以尝试以下方法:通过调用 .as_data_frame() 方法将 H2OFrame 转换为 pandas dataframe,然后在感兴趣的列上调用 .tolist()。
下面是一个包含 iris 数据集的自包含示例。
import h2o
h2o.init()
df = h2o.import_file("iris_wheader.csv")
pd = df.as_data_frame()
pd['sepal_len'].tolist()

谢谢!这绝对是比另外两个更好的解决方案。 - BlueFeet

2
你可以按照以下步骤来完成操作:(1) 将H2o框架转换为pandas数据框;(2) 将pandas数据框转换为列表。具体方法如下所示:
pd=h2o.as_list(h2oFrame) 
l=pd["column"].tolist()

谢谢,这很有帮助。第二行代码解决了我的问题。 - ABHINEET SINGH

0
H2O的as_list方法返回一个包含列名的列表列表,因此在提取列后,您需要展开列表,如下所示。
column_as_list_of_lists = h2o.as_list(h2oFrame[:,'<col_name>'],use_pandas=False)  
flat_list = [item for sublist in column_as_list_of_lists[1:len(column_as_list_of_lists)-1] for item in sublist]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接