it-swarm.com.de

Pandas-Datenrahmen sortieren und höchste n-Werte drucken

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()
25

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
26
jezrael

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) .

22
Andy Hayden
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

2
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

1
megamind