31

我有一个熊猫数据框,我想按降序对列('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()
4

4 回答 4

38

我认为您可以使用nlargest(新pandas版本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
于 2016-04-19T05:50:14.513 回答
27

注意: 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).

于 2013-06-06T09:36:46.773 回答
3
df['Bytes'] = df['Bytes'].astype('int')
print df.sort('Bytes', ascending=False).head(10)[['Bytes', 'Client-IP']]

我可以在 Andy Hayden 的帮助下使用上面的代码解决它。:D

于 2013-06-06T13:35:31.690 回答
1
df[['Bytes', 'Client Ip']].sort_values('Bytes', ascending=False).nlargest(10, 'Bytes')

这应该可以为您提供所需的一切 1) 排序字节 2) 返回最大的 10 字节值

于 2018-09-14T10:02:24.053 回答