Python创建h2o框架的副本

Nat*_*son 2 python h2o

我非常习惯R的h2o框架,但是在python中适应h2o的某些方面有些麻烦。

我知道您可以使用.copy()方法创建熊猫数据框的副本,以便在更新新数据框时也不会更新原始数据框。水框架是否具有类似的功能?更复杂的是,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. 
Run Code Online (Sandbox Code Playgroud)

Lau*_*ren 5

如果要创建数据框的副本,可以使用h2o.deep_copy(data, xid)。(其中xid是您为后端H2OFrame提供的字符串ID)

如果您有一个数据框df并且

old_df = df
new_df = df
Run Code Online (Sandbox Code Playgroud)

old_df和new_df都将在后端指向相同的h2oframe(df),因此对old_df所做的任何更改都将反映在new_df中。

如果要分开更改,可以执行以下操作:

new_df = h2o.deep_copy(df, 'new_df')
Run Code Online (Sandbox Code Playgroud)