在每个h2o数据框group_by组中仅选择第一行(用于合并)?

时间:2019-04-02 22:42:00

标签: h2o

是否有一种方法只能在每个h2o数据框group_by组中选择第一行?

执行此操作的原因是将h2o数据框中的某些列合并到该数据框的group_by版本中,该版本是为了获取某些统计信息而创建的。基于原始文档中的特定分组。

例如,假设有两个数据框,例如

df1
receipt_key  b  c item_id
------------------------
a1           1  2 1
a2           3  4 1

and

df2
receipt_key  e  f  item_id
--------------------------
a1           5  6  1
a1           7  8  2
a2           9  10 1

想加入他们,以便最终获得数据框架

df3
receipt_key  b c e f  item_id
-----------------------------
a1           1 2 5 6  1
a2           3 4 9 10 1

尝试进行类似df2.group_by('receipt_key').max('item_id')的操作以合并到df1中,但是这样做只会将item_id列保留在组的get_frame()数据框中(甚至将df2中的所有列都列出到{{1}中) }不会给出正确的值,而且对于我的实际用例来说比较麻烦,因为在df2中有很多列。

关于如何做到这一点的任何想法?

仅删除重复项是否足以获得所需的数据帧(尽管在h2o中这样做似乎有障碍,请参见https://0xdata.atlassian.net/browse/PUBDEV-3292)?

1 个答案:

答案 0 :(得分:0)

您要去的地方

import h2o
h2o.init()

df1 = h2o.H2OFrame({'receipt_key': ['a1', 'a2'] , 'b':[1,3] , 'c':[2,4], 'item_id': [1,1]})
df1['receipt_key'] = df1['receipt_key'] .asfactor()
df2 = h2o.H2OFrame({'receipt_key': ['a1', 'a1','a2'] , 'e':[5,7,9] , 'f':[6,8,10], 'item_id': [1,2,1]})
df2['receipt_key'] = df2['receipt_key'].asfactor()

df3 = df1.merge(df2)
df_subset = df3[['receipt_key','b','c','e','f','item_id']]
print(df_subset)

receipt_key b   c   e   f   item_id
a1          1   2   5   6   1
a2          3   4   9   10  1