对Pandas数据帧进行排序并打印最高n值

问题描述 投票:25回答:4

我有一个pandas数据框,我想按降序排序列('字节')并打印最高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()
pandas sorting dataframe max
4个回答
27
投票

我想你可以使用nlargestpandas版本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

22
投票

注意: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
投票
df['Bytes'] = df['Bytes'].astype('int')
print df.sort('Bytes', ascending=False).head(10)[['Bytes', 'Client-IP']]

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


1
投票
df[['Bytes', 'Client Ip']].sort_values('Bytes', ascending=False).nlargest(10, 'Bytes')

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

© www.soinside.com 2019 - 2024. All rights reserved.