Можете попробовать вот такой способ (если я правильно понял ваш запрос с ранжированием и дальнейшей фильтрацией). Здесь используется группировка по определенной колонке, а затем внутри этой группы ранжируются значения. Выглядит вот так:
import pandas as pd
data = pd.DataFrame({
'key_1' : ['x', 'x', 'x', 'y', 'y', 'y'],
'key_2' : [1, 2, 3, 4, 5, 6]
})
# Здесь добавляете ранги внутри каждой из групп
data['rank'] = data \
.groupby('key_1', as_index=False)['key_2'] \
.rank(method='first', ascending=True) \
# Здесь происходит фильтрация по рангу
data = data.loc[data['rank'] == 1]
Вот здесь есть подробная документация для этого способа:
https://pandas.pydata.org/docs/reference/api/panda...