У меня есть DataFrame с тысячами строк и 20 столбцов. Датой является индекс, и есть много одинаковых дат. Пример ДФ:Фильтрация базы данных pandas на основе groupby (только верх 3)
Stock Sales Data 1 Data 2
1/1/2012 Apple 120 0.996691907 0.376607328
1/1/2012 Apple 230 0.084699221 0.56433743
1/1/2012 Apple 340 0.141253424 0.319522467
1/1/2012 Berry 230 0.506264018 0.123657902
1/1/2012 Berry 340 0.646633737 0.635841995
1/1/2012 Cat 1250 0.204030887 0.928827628
1/1/2012 Cat 850 0.556935133 0.81033956
1/1/2012 Cat 650 0.771751177 0.988848472
1/1/2012 Cat 650 0.615222763 0.468555772
1/2/2012 Apple 1065 0.504410742 0.402553442
1/2/2012 Apple 200 0.752335341 0.487556857
1/2/2012 BlackBerry 1465 0.693017964 0.925737402
1/2/2012 BlackBerry 2000 0.262392424 0.076542936
1/2/2012 BlackBerry 1465 0.851841806 0.345077839
1/2/2012 BlackBerry 1465 0.70635569 0.718340524
1/2/2012 Tomato 700 0.911297224 0.155699549
1/2/2012 Tomato 235 0.118843588 0.662083069
1/2/2012 Carrot 500 0.07255267 0.585773563
Я хочу, чтобы фильтровать данные таким образом, что для каждой даты и для каждой акции я только показать максимум 3 строки, и я выбираю эти 3 основан на тех, которые имеют максимальные продажи.
Если есть случаи, когда в каждой дате и запасе есть только 1 или 2, то, естественно, он будет поддерживать все строки.
Если есть 3 или более строк для группы даты и акций, тогда я хочу только 3 строки для 3-х максимальных продаж. Если есть 3-я позиция (с одинаковыми номерами продаж), я все же хочу только MAXIMUM 3 строки для этой даты и акций, так что либо случайным выбором, либо любым другим подходящим методом я бы все еще выплюнул 3 строки для этого запаса для конкретную дату.
Пример вывода может быть что-то вроде этого:
Stock Sales Data 1 Data 2
1/1/2012 Apple 120 0.996691907 0.376607328
1/1/2012 Apple 230 0.084699221 0.56433743
1/1/2012 Apple 340 0.141253424 0.319522467
1/1/2012 Berry 230 0.506264018 0.123657902
1/1/2012 Berry 340 0.646633737 0.635841995
1/1/2012 Cat 1250 0.204030887 0.928827628
1/1/2012 Cat 850 0.556935133 0.81033956
1/1/2012 Cat 650 0.771751177 0.988848472
1/2/2012 Apple 1065 0.504410742 0.402553442
1/2/2012 Apple 200 0.752335341 0.487556857
1/2/2012 BlackBerry 2000 0.262392424 0.076542936
1/2/2012 BlackBerry 1465 0.851841806 0.345077839
1/2/2012 BlackBerry 1465 0.70635569 0.718340524
1/2/2012 Tomato 700 0.911297224 0.155699549
1/2/2012 Tomato 235 0.118843588 0.662083069
1/2/2012 Carrot 500 0.07255267 0.585773563
Благодарим вас за прекрасные слова. – piRSquared