Предположим, у меня есть pandas DataFrame вроде этого:
>>> df = pd.DataFrame({'id':[1,1,1,1,1,2,2,2,2,2,2,3,4],'value':[1,1,1,1,3,1,2,2,3,3,4,1,1]})
>>> df
id value
1 1
1 1
1 1
1 1
1 3
2 1
2 2
2 2
2 3
2 3
2 4
3 1
4 1
Я хочу получить новый DataFrame с верхними 2 (ну, действительно, n значениями) значениями для каждого идентификатора включая дубликаты , например:
id value
0 1 1
1 1 1
3 1 1
4 1 1
5 1 3
6 2 1
7 2 2
8 2 2
9 3 1
10 4 1
Я пробовал использовать head () и nsmallest (), но я думаю, что они не будут включать дубликаты. Есть ли лучший способ сделать это?
Отредактировано, чтобы было понятно, что мне нужно более 2 записей на группу, если имеется более 2 дубликатов