Python-h2o:如何正确指定列类型?

Python-h2o:如何正确指定列类型?,python,h2o,Python,H2o,我正在尝试将pandas数据帧导入h2o帧,并指定所需的列类型。问题是,我最终尝试使用两个数据集执行.rbind(),但有时根据某些列的值,h2o会强制它们为实数或int,然后它们无法执行.rbind(),因为列类型不同。我想确保我可以得到两个具有相同列类型的不同数据集,这样这些失败就会发生 可复制的示例如下: import pandas as pd import h2o my_df1 = pd.DataFrame({'a':[1,1,0,0,1],

我正在尝试将pandas数据帧导入h2o帧,并指定所需的列类型。问题是,我最终尝试使用两个数据集执行.rbind(),但有时根据某些列的值,h2o会强制它们为实数或int,然后它们无法执行.rbind(),因为列类型不同。我想确保我可以得到两个具有相同列类型的不同数据集,这样这些失败就会发生

可复制的示例如下:

import pandas as pd
import h2o

my_df1 = pd.DataFrame({'a':[1,1,0,0,1],
                       'b':[1,0,.5,.2,0]})

my_df2 = pd.DataFrame({'a':[.5,.8,0,0,1],
                       'b':[1,0,.5,.2,0]})

h2o.init()
my_h2o1 = h2o.H2OFrame(my_df1)
my_h2o2 = h2o.H2OFrame(my_df2)

my_h2o1.rbind(my_h2o2)  ### This fails

### try to manually specify the column names and types
col_names = [k for k in my_h2o1.types.keys()]
col_types = [v for v in my_h2o1.types.values()]

my_h2o3 = h2o.H2OFrame(my_df2,column_names=col_names, column_types=col_types)

my_h2o1.types.values() == my_h2o3.types.values()

my_h2o1.rbind(my_h2o3)  ### This fails still

在将列类型转换为框架后,尝试转换该列类型

# check types
In [38]: my_h2o1.types
Out[38]: {'a': 'int', 'b': 'real'}

In [39]: my_h2o2.types
Out[39]: {'a': 'real', 'b': 'real'}
因为我们需要
my_h2o1['a']
类型为real(因为一旦rbind列,您将混合使用real和integer)。我们可以使用
asnumeric()

my_h2o1['a']=my_h2o1['a'].asnumeric()

一旦我们有了匹配的类型,我们就可以使用
rbind
方法


my_h2o1.rbind(my_h2o2)

谢谢您的回复。我知道这个修复是基于具体情况的,但我希望在我知道将来可能出现的任何问题之前,能够在大型数据集上预先设置所有列类型。我最后只是做了一个循环,遍历我的_h2o1.types.items(),查找任何“int”数据类型并将其转换为.asnumeric()。我仍然认为如果H2OFrame中的column_types参数起作用会很好,但这有助于解决问题。如果您希望跟踪它,我会将您的问题包含在这个jira票证()的注释中,希望它能够解决列类型的预先规范。