Панды — Как найти второе (n-е) наименьшее значение в потоке данных

#python #pandas

Вопрос:

У меня есть фрейм данных, как показано ниже:

 df1 = pd.DataFrame({'A' : ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'],
                    'B' : ['b', 'c', 'd', 'a', 'c', 'd', 'a', 'b', 'd'],
                    'dis' : [1,2,3,1,5,6, 2,5,4]})

>>>>    A   B   dis
     0  a   b   1
     1  a   c   2
     2  a   d   3
     3  b   a   1
     4  b   c   5
     5  b   d   6
     6  c   a   2
     7  c   b   5
     8  c   d   4
 

Я хочу выбрать только 2-е наименьшее значение в dis столбце для каждого уникального значения в столбце A .

Ожидаемые результаты выглядят следующим образом:

 >>>>    A   B   dis
     1  a   c   2
     4  b   c   5
     8  c   d   4
 

Комментарии:

1. Пожалуйста, укажите ввод и вывод в тексте.

Ответ №1:

Попробуйте это

 df.groupby(['A']).nth(1).dropna().reset_index()