Допустим, у меня есть датафрейм df, как показано ниже.Чтобы получить 1-е, 2-е и 2-е место в каждой группе, я использовал groupby.nth
df = pd.DataFrame({'A': ['a','a','a','a','a','a','a','a','b','b','b','b','b','b','b'],
'B': [1, 2, 3, 4, 5,6,7,8,1, 2, 3, 4, 5,6,7]}, columns=['A', 'B'])
df.groupby('A').nth([0,1,-2,-1])
Результат:
B
A
a 1
a 2
a 7
a 8
b 1
b 2
b 6
b 7
Я не уверен, как получить средние 2 строки.Например, в группе 'A'
есть 8 экземпляров, поэтому моя середина будет 4, 5
(n/2, n/2+1)
, а в группе 'B'
мои средние строки будут 3, 4
(n/2-0.5, n/2+0.5)
.Любое руководство приветствуется.