У меня есть DataFrame
, который выглядит следующим образом:панды nlargest возвращается больше, чем п строк
name value
date
2016-05-01 kelly 20
2016-05-05 john 12
2016-05-05 sarah 25
2016-05-05 george 3
2016-05-05 tom 40
2016-05-07 kara 24
2016-05-07 jane 90
2016-05-07 sally 39
2016-05-07 sam 28
Я хочу, чтобы получить верхние 3 строки (по значению), предпочтительно в день. Я ожидал что-то вроде этого:
name value
date
2016-05-01 kelly 20
2016-05-05 john 12
2016-05-05 sarah 25
2016-05-05 tom 40
2016-05-07 jane 90
2016-05-07 sally 39
2016-05-07 sam 28
, но я в порядке и с этим:
name value
date
2016-05-05 tom 40
2016-05-07 jane 90
2016-05-07 sally 39
Я попытался df.nlargest(3, 'value')
, но я получаю этот странный результат:
name value
date
2016-05-01 kelly 20
2016-05-01 kelly 20
2016-05-01 kelly 20
2016-05-05 tom 40
2016-05-05 tom 40
2016-05-05 tom 40
2016-05-05 sarah 25
2016-05-05 sarah 25
2016-05-05 sarah 25
2016-05-07 kara 24
2016-05-07 kara 24
...
2016-05-07 sally 39
2016-05-07 sally 39
2016-05-07 jane 90
2016-05-07 jane 90
2016-05-07 jane 90
I пытался использовать его изо дня в день:
[df.ix[day].nlargest(3, 'value') for day in df.index.unique()]
но у меня такая же проблема (каждое имя дублируется 3 раза)
Спасибо! поэтому groupby (level = 0) + sorting получил результаты за дату так же, как мне было нужно. Я предполагаю, что самый крупный не может использоваться в этом случае использования – codekitty