Я хочу получить все строки с минимальным значением столбца на группу,
пример:
df = pd.DataFrame({'asset_symbol': ['100', '100', '100', '1015', '1015'],
'percent_thresh': [0.75, 0.85, 0.95, 0.75, 0.85],
'rank': [7.0, 7.0, 4.0, 2.0, 3.0]})
+--------------+----------------+------+
| asset_symbol | percent_thresh | rank |
+--------------+----------------+------+
| 100 | 0.75 | 7 |
+--------------+----------------+------+
| 100 | 0.85 | 7 |
+--------------+----------------+------+
| 100 | 0.95 | 4 |
+--------------+----------------+------+
| 1015 | 0.75 | 2 |
+--------------+----------------+------+
| 1015 | 0.85 | 3 |
+--------------+----------------+------+
желаемая таблица:
+--------------+----------------+------+
| asset_symbol | percent_thresh | rank |
+--------------+----------------+------+
| 100 | 0.95 | 4 |
+--------------+----------------+------+
| 1015 | 0.75 | 2 |
+--------------+----------------+------+
моя попытка было:
def max_row(df, column):
return df.loc[df[column].idxmin()]
df.groupby('asset_symbol').apply(max_row, 'rank')
однако я обычно воздерживаюсь от применения apply