4

我有一个带有整数索引的熊猫系列,我已经排序(按值),我如何在这个系列中按位置访问值。

例如:

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)

这将对值进行排序,但保留索引。

编辑:

要获得已排序系列中的第四个值:

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

.

在pandas “gotchas”.ix中记录了整数索引的行为:

在 pandas 中,我们的一般观点是标签比整数位置更重要。因此,对于整数轴索引,使用标准工具(如.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 回答