【问题标题】:H2OFrame() in Python is adding additional duplicate rows to the Pandas DataFrame- Bug?Python 中的 H2OFrame() 正在向 Pandas DataFrame 添加额外的重复行 - 错误?
【发布时间】:2018-01-22 03:36:50
【问题描述】:

使用 h2o.H2OFrame() 函数将 Pandas 数据帧转换为 H2O 帧时,会发生错误。

正在 H2o 框架中创建更多行。当我对此进行调查时,似乎新行与其他行重复。根据数据大小,添加的重复行数会有所不同,但通常在 2-10 左右。

代码:

train_h2o = h2o.H2OFrame(python_obj=train_df_complete)

print(train_df_complete.shape[0])
print(train_h2o.nrow)

输出:

3871998
3872000

正如您在此处看到的,已添加了 2 行。仔细研究后,现在每个用户有 2 行,其中 2 个用户。 IE。有 2 行被复制。

这似乎是一个重大错误,有没有人遇到过这个问题,有没有办法解决它?

谢谢

【问题讨论】:

  • 此问题可能由特定数据集触发。您能否提供有关数据的更多详细信息?是否有任何具有多行值的字符串列?我们知道 NA 值存在问题 (0xdata.atlassian.net/browse/PUBDEV-4723),但您的问题似乎有所不同。
  • Pandas 数据框具有以下结构: RangeIndex:3871998 个条目,0 到 3871997 数据列(共 34 列)dtypes:float64(27) , int64(4), object(3) 内存使用量:1004.4+ MB。没有多行字符串,重复行每次都出现在同一个索引处。
  • 谢谢,我无法在合成数据集上重现该问题。你能在 jira.h2o.ai 中提交错误吗?如果 jira 问题也包括 H2O 日志,这将有所帮助。
  • 我和this dataset 一样(需要登录Kaggle)。 892,816 行,57 列,浮点数和整数的混合。没有字符串或 NaN。 3 行在位置 90989、197125 和 409416 处重复。H2O 3.14.0.7,win7。只需h2o.H2OFrame(pd.read_csv('test.csv', index_col='id'))
  • 我遇到了完全相同的问题...我使用的是 H2O 版本 3.18.0.2

标签: python python-3.x pandas h2o


【解决方案1】:

我遇到了同样的问题,假设您的“train_h2o”没有重复项,只需识别数据框中重复项的索引并将其删除即可。不幸的是,h2o Dataframe 的功能有限。

temp_df = train_h2o.as_data_frame()
train_h2o = train_h2o.drop(list(temp_df[temp_df.duplicated()].index), axis=0)

【讨论】:

    【解决方案2】:

    如果您的数据集可能包含并非来自此 H2O 错误的其他重复行,建议的解决方案也将删除这些行。如果您想确保只删除 H2O 添加的其他行,此解决方案可能会帮助您:

    temp_df = train_df_complete.copy()
    temp_df['__temp_id__'] = np.arange(len(temp_df))
    train_h2o = H2OFrame(temp_df)
    train_h2o.drop_duplicates(columns=['__temp_id__'], keep='first')
    train_h2o = train_h2o.drop('__temp_id__', axis=1)
    

    我在这里所做的是创建一个临时列,然后将其用作 ID,以便仅删除 H2OFrame 生成的重复项。删除重复项后,我将删除临时列。这可能不是最优雅的方式,但它确实有效。

    【讨论】:

      【解决方案3】:

      我在特定数据集上遇到了同样的问题。 基本数据框上的重置索引对我有用。

      import h2o
      
      train_df_complete = train_df_complete.reset_index()
      train_h2o = h2o.H2OFrame(train_df_complete)
      
      

      我正在使用 h2o 3.30.1.3。

      【讨论】:

        猜你喜欢
        • 2022-01-01
        • 2019-08-08
        • 2013-09-27
        • 2021-06-24
        • 2017-08-17
        • 1970-01-01
        • 2019-07-24
        • 1970-01-01
        相关资源
        最近更新 更多