Select 每个 h2o 数据帧中只有第一行 group_by 组(用于合并)?

Select only first rows in each h2o dataframe group_by group (for merging)?

有没有办法 select 每个 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 中,但这样做只会在组的 get_frame() 数据框中留下 item_id 列(甚至列出所有列df2 到 max() on 不会给出正确的值,而且对于我的实际用例(在 df2 中有更多列)来说也很麻烦。

关于如何做到这一点有什么想法吗?简单地删除重复项是否足以获得所需的数据框(尽管在 h2o 中执行此操作似乎存在障碍,请参阅 https://0xdata.atlassian.net/browse/PUBDEV-3292)?

给你:

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