Python 创建 h2o 框架的副本

标签 python h2o

我非常习惯 R 的 h2o 框架,但在 python 中适应 h2o 的某些方面时遇到一些困难。

我知道您可以使用 .copy() 方法创建 pandas 数据帧的副本,这样当您更新新数据帧时,就不会同时更新原始数据帧。 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 所做的任何更改都将反射(reflect)在 new_df 中。

如果您想将更改分开,您可以这样做:

new_df = h2o.deep_copy(df, 'new_df')

关于Python 创建 h2o 框架的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50162987/

相关文章:

python - 如何在 pandas + python 中将值从一行传递到下一行,并使用它递归计算相同的后续值

javascript - 在 Javascript 中,字典理解或对象 `map`

docker - 使用Docker容器模板的H2O深水->无法访问Flow UI

R h2o : how to implement a custom stopping_metric for GBM

python - pandas 类型转换的 h2o 框架

python - matplotlib 中每个图的宽度和高度轴相同

python - 根据唯一的列值重复数据帧行 n 次,并为每行重复创建具有不同值的新列

python - 如何检查不变性

r - 无法在 automl() 用例中加载未获胜的模型

h2o - XGBoost - H2O 由于非法内存访问而崩溃