Сортировка 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()
Ответы
Ответ 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