web-dev-qa-db-ja.com

pandas.Seriesのi番目のアイテムのインデックスを取得する方法

私が持っているシリーズの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で行うより良い方法はありますか?.

ありがとうございました。

14
D3VLPR

インデックスから直接取得できます

s.index[5]

または

s.index.values[5]

すべては、betterの考慮事項によって異なります。 numpyアプローチの方がおそらく高速だと言えます。

例えば。 numpy.argsortは、配列の最初の要素が、ソートされる配列の中で最初にする必要がある位置である配列を返します。 argsortの戻り配列の2番目の要素は、ソートされる配列内の2番目の要素の位置です。などなど。

したがって、これを実行して、ソート後に6番目の項目のインデックス値を取得できます。

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

またはより透過的に

s.sort_values().index[5]

またはより創造的に

s.nsmallest(6).idxmax()
30
piRSquared

s.index [5]は、6番目のアイテムのインデックスを提供します

0
davidbilla