Как правильно запросить первые N строк по группам в python datatable ?
Например, чтобы получить верхние 2 строки, имеющие наибольшее значение v3
по группе id2, id4
, я бы сделал выражение панды следующим образом:
df.sort_values('v3', ascending=False).groupby(['id2','id4']).head(2)
в R с использованием data.table
:
DT[order(-v3), head(v3, 2L), by=.(id2, id4)]
или в R, используя dplyr
:
DF %>% arrange(desc(v3)) %>% group_by(id2, id4) %>% filter(row_number() <= 2L)
Пример данных и ожидаемого выхода с использованием панд:
import datatable as dt
dt = dt.Frame(id2=[1, 2, 1, 2, 1, 2], id4=[1, 1, 1, 1, 1, 1], v3=[1, 3, 2, 3, 3, 3])
df = dt.to_pandas()
df.sort_values('v3', ascending=False).groupby(['id2','id4']).head(2)
# id2 id4 v3
#1 2 1 3
#3 2 1 3
#4 1 1 3
#2 1 1 2