Подтвердить что ты не робот

Сортировка Pandas данных и печать самых высоких значений n

У меня есть кадр данных pandas, и я хочу сортировать столбец ( "Bytes" ) в порядке убывания и печатать самые высокие 10 значений и связанное с ним значение столбца "Клиентский IP". Предположим, что следующее является частью моего фрейма. У меня много разных методов и не удалось?

0       Bytes    Client Ip                
0       1000      192.168.10.2    
1       2000      192.168.10.12    
2       500       192.168.10.4     
3       159       192.168.10.56 

После печати выводится только исходное значение, которое имеет наибольшее значение.

print df['Bytes'].argmax()
4b9b3361

Ответ 1

Примечание: sort устарел - используйте sort_values вместо

В sort нисходящее использование ascending=False:

In [6]: df.sort('Bytes', ascending=False)
Out[6]:
   0  Bytes      Client Ip
1  1   2000  192.168.10.12
0  0   1000   192.168.10.2
2  2    500   192.168.10.4
3  3    159  192.168.10.56

Чтобы взять первые 10 значений, используйте .head(10).

Ответ 2

Я думаю, вы можете использовать nlargest (Новое в pandas version 0.17.0):

print df
   0  Bytes  Client             Ip
0  1      1    1000   192.168.10.2
1  0      0    2000  192.168.10.12
2  2      2     500   192.168.10.4
3  3      3     159  192.168.10.56

print df.nlargest(3, 'Client')
   0  Bytes  Client             Ip
1  0      0    2000  192.168.10.12
0  1      1    1000   192.168.10.2
2  2      2     500   192.168.10.4

Ответ 3

df['Bytes'] = df['Bytes'].astype('int')
print df.sort('Bytes', ascending=False).head(10)[['Bytes', 'Client-IP']]

Я мог бы решить это, используя вышеприведенный код с помощью Энди Хайдена.: D