我试图获得系列中第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执行此操作是否有更好的方法。
谢谢。
答案 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]应该为您提供第六项的索引