是否有一种方法只能在每个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)?答案 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