从最大值到第10个值排名并在Pandas

时间:2017-05-21 22:26:13

标签: pandas dataframe max rank

我有一个关于该州犯罪率的数据框,我想排名前10个犯罪率最高的郊区。目前,我可以使用.rank(),但我想输出郊区的名称,而不是犯罪的价值

谢谢!

2 个答案:

答案 0 :(得分:0)

我不得不推断出数据的样子,因为您还没有提供数据样本。但是,如果数据看起来像这样......

>>> df = pd.DataFrame({'state':['NH', 'CA', 'MA', 'FL'], 'crime_rates':[0.5, 1.3, 0.9, 1.1]})
>>> df
   crime_rates state
0          0.5    NH
1          1.3    CA
2          0.9    MA
3          1.1    FL

然后只需使用ascending=False进行排序,就会返回按犯罪率排序的状态。

>>> df.sort_values('crime_rates', ascending=False)
   crime_rates state
1          1.3    CA
3          1.1    FL
2          0.9    MA
0          0.5    NH

如果此解决方案由于数据的细微差别而无效,则发布数据,我会进行修改。

答案 1 :(得分:0)

您可以将nlargestkeep参数一起使用,以确定如何处理关系。

创建虚拟数据

df = pd.DataFrame({'Suburb':['Suburb No.'+str(i) for i in range(35)],'Crime Rate':np.random.randint(15,45,35)/100})

按犯罪率计算前10名郊区

df.nlargest(10, 'Crime Rate')

输出:

    Crime Rate        Suburb
22        0.43  Suburb No.22
2         0.41   Suburb No.2
15        0.41  Suburb No.15
20        0.41  Suburb No.20
29        0.41  Suburb No.29
8         0.40   Suburb No.8
30        0.40  Suburb No.30
34        0.37  Suburb No.34
3         0.36   Suburb No.3
9         0.35   Suburb No.9