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

时间:2016-12-21 22:30:50

标签: python pandas dataframe series

我试图获得系列中第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执行此操作是否有更好的方法。

谢谢。

2 个答案:

答案 0 :(得分:21)

你可以直接从索引中获取

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()

答案 1 :(得分:0)

s.index [5]应该为您提供第六项的索引