4

このシリーズの位置で値にアクセスする方法で、(値で) 並べ替えた整数インデックスを持つ pandas シリーズがあります。

例えば:

s_original = pd.Series({0: -0.000213, 1: 0.00031399999999999999, 2: -0.00024899999999999998, 3: -2.6999999999999999e-05, 4: 0.000122})
s_sorted = np.sort(s_original)

In [3]: s_original
Out[3]: 
0   -0.000213
1    0.000314
2   -0.000249
3   -0.000027
4    0.000122

In [4]: s_sorted
Out[4]: 
2   -0.000249
0   -0.000213
3   -0.000027
4    0.000122
1    0.000314

In [5]: s_sorted[3]
Out[5]: -2.6999999999999999e-05

しかし、値 0.000122、つまり位置3の項目を取得したいと考えています。
どうすればこれを行うことができますか?

4

2 に答える 2

7

行を置き換えます

b = np.sort(a)

b = pd.Series(np.sort(a), index=a.index)

これにより値が並べ替えられますが、インデックスは保持されます。

編集:

ソートされたシリーズの4番目の値を取得するには:

np.sort(a).values[3]
于 2013-01-22T10:00:06.847 に答える
5

を使用igetして位置で取得できます:
(実際、このメソッドは特にこのあいまいさを克服するために作成されました。)

In [1]: s = pd.Series([0, 2, 1])

In [2]: s.sort()

In [3]: s
Out[3]: 
0    0
2    1
1    2

In [4]: s.iget(1)
Out[4]: 1

.

.ix整数インデックスを使用したの動作は、パンダの「落とし穴」に記載されています。

パンダでは、私たちの一般的な見解は、ラベルが整数の位置よりも重要であるということです。したがって、整数軸のインデックスでは、ラベルベースのインデックス作成のみが のような標準ツールで可能.ixです。

この慎重な決定は、あいまいさと微妙なバグを防ぐために行われました (位置ベースのインデックス作成での「フォールバック」を停止するために API の変更が行われたときに、多くのユーザーがバグを発見したと報告しています)。

注: これ.ix、あいまいではない整数以外のインデックスを使用している場合に機能します。

例えば:

In [11]: s1 = pd.Series([0, 2, 1], list('abc'))

In [12]: s1
Out[12]: 
a    0
b    2
c    1

In [13]: s1.sort()

In [14]: s1
Out[14]: 
a    0
c    1
b    2

In [15]: s1.ix[1]
Out[15]: 1
于 2013-01-22T19:38:47.873 に答える