J'ai un cadre de données pandas et je souhaite trier la colonne ('Octets') par ordre décroissant et imprimer les 10 valeurs les plus élevées et la valeur de colonne correspondante "IP du client". Supposons que cela fasse partie de mon cadre de données. J'ai beaucoup de méthodes différentes et a échoué?
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
Le suivi de n’imprime que le brut qui a la valeur la plus élevée.
print df['Bytes'].argmax()
Je pense que vous pouvez utiliser nlargest
(Nouveauté de 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
Remarque:sort
est obsolète - utilisez plutôt sort_values
Pour sort
décroissant, utilisez 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
Pour prendre les 10 premières valeurs, utilisez .head(10)
.
df['Bytes'] = df['Bytes'].astype('int')
print df.sort('Bytes', ascending=False).head(10)[['Bytes', 'Client-IP']]
Je pourrais le résoudre en utilisant le code ci-dessus avec l'aide de Andy Hayden. :RÉ
df[['Bytes', 'Client Ip']].sort_values('Bytes', ascending=False).nlargest(10, 'Bytes')
Cela devrait vous fournir tout ce dont vous avez besoin 1) Trier les octets 2) Renvoyer les 10 valeurs les plus grandes