首页 文章

如何在pandas.Series中获取第i个项目的索引

提问于
浏览
10

我正试图获得我所拥有的系列中第6项的索引 .

这就是头部的样子

United States    1.536434e+13
China            6.348609e+12
Japan            5.542208e+12
Germany          3.493025e+12
France           2.681725e+12

为获得第6个索引名称(排序后的第6个国家/地区),我通常使用s.head(6)并从那里获得第6个索引

s.head(6)给了我

United States     1.536434e+13
China             6.348609e+12
Japan             5.542208e+12
Germany           3.493025e+12
France            2.681725e+12
United Kingdom    2.487907e+12

看着这个,我得到的指数是英国 .

那么,有没有更好的方法来获得除此之外的索引 . 而且,对于数据框,是否有任何函数在排序后根据相应的列获得第6个索引 .

如果它是数据框,我通常排序,创建一个名为index的新列,并使用reset_index,然后使用iloc属性获取第6个(因为,它将在重置后使用索引中的范围) .

使用pd.Series和pd.DataFrame有没有更好的方法 .

谢谢 .

1 回答

  • 18

    你可以直接从索引中得到它

    s.index[5]
    

    要么

    s.index.values[5]
    

    这一切都取决于你认为 better . 我可以告诉你, numpy 方法可能会更快 .

    例如 . numpy.argsort 返回一个数组,其中数组中的第一个元素是要排序的数组中应该是第一个的位置 . argsort返回数组中的第二个元素是要排序的数组中元素的位置,应该是第二个 . 等等等等 .

    因此,您可以执行此操作以在排序后获取第6个项目的索引值 .

    s.index.values[s.values.argsort()[5]]
    

    或者更透明

    s.sort_values().index[5]
    

    或者更有创意

    s.nsmallest(6).idxmax()
    

相关问题