Ich habe einen Pandas-Datenrahmen, und ich möchte die Spalte ('Bytes') in absteigender Reihenfolge sortieren und die höchsten 10 Werte und den zugehörigen "Client IP" -Spaltenwert drucken. Angenommen, Folgendes ist ein Teil meines Datenrahmens. Ich habe viele verschiedene Methoden und habe versagt?
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
Nachfolgend wird nur das Rohmaterial gedruckt, das den höchsten Wert hat.
print df['Bytes'].argmax()
Ich denke, Sie können nlargest
(Neu in pandas
Version 0.17.0
) verwenden:
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
Hinweis:sort
ist veraltet - verwenden Sie stattdessen sort_values
Zu sort
absteigend verwenden 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
Um die ersten 10 Werte zu erhalten, verwenden Sie .head(10)
.
df['Bytes'] = df['Bytes'].astype('int')
print df.sort('Bytes', ascending=False).head(10)[['Bytes', 'Client-IP']]
Ich könnte es mithilfe des obigen Codes mithilfe von Andy Hayden lösen. : D
df[['Bytes', 'Client Ip']].sort_values('Bytes', ascending=False).nlargest(10, 'Bytes')
Damit sollten Sie alles bekommen, was Sie brauchen 1) Sortierbytes 2) Rückgabe der größten 10 Byte-Werte