H2O.apply python函数似乎被打破了

时间:2017-07-04 16:19:09

标签: python apply h2o

我在使用anaconda 4.3.22下的Python 3.6.1中的H2O应用功能时遇到问题。我正在Windows 10上运行H2O 3.10.4.4版本。我怀疑这可能是一个错误(或者文档中存在错误。)

我从H2O小册子中获取了此示例代码段,第14页: http://docs.h2o.ai/h2o/latest-stable/h2o-docs/booklets/PythonBooklet.pdf

df5 = h2o.H2OFrame.from_python(np.random.randn(100,4).tolist(), column_names=list("ABCD"))
df5.apply(lambda x: x.mean(na_rm=True))

我收到了错误:

IndexError                                Traceback (most recent call last)
<ipython-input-138-e45989298b6f> in <module>()
      1 df5 = h2o.H2OFrame.from_python(np.random.randn(100,4).tolist(), column_names=
      2 list("ABCD"))
----> 3 df5.apply(lambda x: x.mean(na_rm=True))

C:\cygwin64\usr\local\anaconda3\lib\site-packages\h2o\frame.py in apply(self, fun, axis)
   2756         assert_is_type(fun, FunctionType)
   2757         assert_satisfies(fun, fun.__name__ == "<lambda>")
-> 2758         res = _bytecode_decompile_lambda(fun.__code__)
   2759         return H2OFrame._expr(expr=ExprNode("apply", self, 1 + (axis == 0), *res))
   2760 

C:\cygwin64\usr\local\anaconda3\lib\site-packages\h2o\astfun.py in _bytecode_decompile_lambda(co)
     86                 raise ValueError("unimpl: op in hasjrel")
     87             elif op in haslocal:
---> 88                 args.append(co.co_varnames[oparg])  # LOAD_FAST
     89             elif op in hascompare:
     90                 args.append(cmp_op[oparg])  # COMPARE_OP

IndexError: tuple index out of range

1 个答案:

答案 0 :(得分:1)

Python小册子中的代码已过时 - 参数名称已更改为与Pandas兼容,但不幸的是它没有向后兼容(这是一个错误,我打开了修复该here的票证)。现在的论点是skipna。这是正确的方法:

df5 = h2o.H2OFrame.from_python(np.random.randn(100,4).tolist(), column_names=list("ABCD"))
df5.apply(lambda x: x.mean(skipna=False))