Как получить поле, которое имеет пятое по порядку наибольшее значение в пандах - PullRequest
0 голосов
/ 02 июля 2018

Я использую панд, и у меня есть что-то вроде этого:

**ID name total-cost**
  1  a    7
  2  b    4
  3  c    1
  4  e    6
  5  f    80
  6  k    85

Итак, мне нужно получить пятое значение в порядке наибольшей из общих затрат, которое здесь равно 4 [85 80 7 6 4 1]. Не имя, не ID, просто значение.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Вы можете использовать функцию nlargest(n), чтобы получить n самых больших чисел, как показано ниже

import pandas as pd
df = pd.DataFrame([['a',7],['b',4],['c',1],['e',6],['f',80],['k',85]], columns=['name','total_cost'])
In [2]: df.total_cost.nlargest(5)
Out[2]: 
5    85
4    80
0     7
3     6
1     4
Name: total_cost, dtype: int64

df.nlargest(n) возвращает серию панд с исходным индексом и n самыми большими значениями

Если все, что вам нужно, это 5-е наибольшее значение, вы можете использовать df.total_cost.nlargest(5).reset_index().total_cost[4]

0 голосов
/ 02 июля 2018

Вы можете отсортировать, а затем использовать iloc, чтобы получить пятое значение:

df.sort_values('total-cost', ascending=False)['total-cost'].iloc[4]

Или используйте nlargest(5), чтобы получить 5 самых больших, а затем используйте iloc, чтобы получить последнее значение из этого:

df['total-cost'].nlargest(5).iloc[-1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...