python - Python 创建 h2o 框架的副本
问题描述
我非常习惯于 R 的 h2o 框架,但是在 python 中适应 h2o 的某些方面时遇到了一些麻烦。
我知道您可以使用 .copy() 方法创建熊猫数据框的副本,这样当您更新新数据框时,您也不会更新原始数据框。h2o 框架有类似的功能吗?更复杂的是,h2o 框架似乎不符合函数本地/全局环境规则。
下面是一个示例,似乎只要我可以创建框架的 .copy,或者让本地环境功能不更新我的全局环境,它就会解决我的问题。如果我在 R 中创建完全相同的东西,那么它的行为与预期完全一样,并且实际上并没有修改我原来的 h2o 框架中的列,那么我怎样才能让 python 以同样的方式工作呢?
##### A FUNCTION TO CHANGE THE VALUE OF A COLUMN
def test_func(train_df,
var):
train_df[var] = train_df[var].log()
return(train_df)
##### TRY TO CREATE A NEW COPY OF THE FRAME WITH THE COLUMN CHANGED
new_df = test_func(train_df = old_df,
var = 'target')
##### THE COLUMN IN BOTH new_df AND old_df has both been changed.
解决方案
如果要创建数据框的副本,可以使用h2o.deep_copy(data, xid)
. (其中 xid 是您为后端 H2OFrame 提供的字符串 id)
如果你有一个数据框 df 并且你有
old_df = df
new_df = df
old_df 和 new_df 都将指向后端的同一个 h2oframe (df),因此对 old_df 所做的任何更改都将反映在 new_df 中。
如果您想将更改分开,您可以执行以下操作:
new_df = h2o.deep_copy(df, 'new_df')
推荐阅读
- python - 在 Python 中将 2 个文本文件合并为一个具有 2 列的文本文件
- c# - 如何在 Unity3D 中将一个对象移向另一个对象?
- javascript - GetUIkit3 可排序:回调
- git - 从 Jenkins 上的 GitHub 克隆:无法加载 PEM 客户端证书
- jquery - 使用 2 个输入值的条件语句
- excel - 多个工作表更改事件:多个下拉列表
- javascript - 如何模糊其他窗口而不是电子窗口?
- wordpress - 无法让 nginx 在其他位置使用 wordpress
- azure - 了解 Kusto
- matplotlib - 渲染 MathText 以获取其边界框时 Matplotlib 内存泄漏