Pandas 从最大值到第10个值排序,并输出其对应的行

Pandas 从最大值到第10个值排序,并输出其对应的行,pandas,dataframe,max,rank,Pandas,Dataframe,Max,Rank,我有一个该州犯罪率的数据框架,我想把犯罪率最高的10个郊区排在前面。目前,我可以使用.rank(),但我想输出郊区的名称,而不是犯罪的价值 谢谢 我被迫推断数据是什么样子,因为您没有提供数据样本。但是,如果数据是这样的 >>> df = pd.DataFrame({'state':['NH', 'CA', 'MA', 'FL'], 'crime_rates':[0.5, 1.3, 0.9, 1.1]}) >>> df crime_rates state

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


谢谢

我被迫推断数据是什么样子,因为您没有提供数据样本。但是,如果数据是这样的

>>> 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
然后简单地使用
升序=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
如果此解决方案因数据中的细微差别而无效,请发布数据,我将进行修改。

您可以使用
keep
参数来确定如何处理领带

创建虚拟数据

df = pd.DataFrame({'Suburb':['Suburb No.'+str(i) for i in range(35)],'Crime Rate':np.random.randint(15,45,35)/100})
按犯罪率计算排名前十的郊区

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

您可以发布您尝试过的部分数据和代码吗?