Python 创建 h2o 帧的副本
Python Create Copy of h2o frame
我非常习惯 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 所做的任何更改都将反映在 new_df 中。
如果您想单独进行更改,您可以这样做:
new_df = h2o.deep_copy(df, 'new_df')
我非常习惯 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 所做的任何更改都将反映在 new_df 中。
如果您想单独进行更改,您可以这样做:
new_df = h2o.deep_copy(df, 'new_df')