Выберите только первые строки в каждой группе данных группы данных h2o (для объединения)? - PullRequest
0 голосов
/ 03 апреля 2019

Есть ли способ выбрать только первые строки в каждой группе данных h2o group_by?

Причина этого состоит в том, чтобы объединить некоторые столбцы в кадре данных h2o в group_by 'ed версию этого кадра данных.это было создано, чтобы получить некоторые характеристики.на основе определенных группировок в оригинале.

Пример. Предположим, было два кадра данных, например,

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 до max() on не даст правильных значений, так кака также быть громоздким для моего фактического варианта использования, который имеет гораздо больше столбцов в df2).

Есть идеи, как это можно сделать?Было бы достаточно просто удалить дубликаты, чтобы получить нужный кадр данных (хотя, как представляется, существуют препятствия для этого в h2o, см. https://0xdata.atlassian.net/browse/PUBDEV-3292)?

1 Ответ

0 голосов
/ 04 апреля 2019

здесь вы идете:

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
...