np.argsort如何在pandas数据框中工作

时间:2016-08-26 21:23:46

标签: python python-3.x pandas numpy

我的pandas数据框名为“index”,如

tz
                       521.0
Africa/Cairo             3.0
Africa/Casablanca        1.0   
Africa/Ceuta             2.0
Africa/Johannesburg      1.0
dtype: float64 

当我申请index.argsort()时,我会得到类似这样的内容

tz
                       2
Africa/Cairo           4
Africa/Casablanca      3
Africa/Ceuta           1
Africa/Johannesburg    0
dtype: int64

有人可以解释数字“2,4,3,1,0”是怎么来的吗?我知道有从0到4的索引范围,但我想不出有顺序的逻辑。

2 个答案:

答案 0 :(得分:6)

argsort返回要排序的值的索引位置。请记住,这是一个numpy函数,它对系列或数据框索引的赋值是错误的。

  • 2指的是2位置(第3位)中的项目是最小值
    • 这是1.0
  • 4指的是下一个4位置(第5个)中的项目
    • 1.0
  • 3(第4位)是2.0
  • 1(第二位)是3.0
  • 0(第一个位置)是521.0,最大

分配给数组并用作切片

更合适
a = s.values.argsort()
s.iloc[a]

tz
Africa/Casablanca        1.0
Africa/Johannesburg      1.0
Africa/Ceuta             2.0
Africa/Cairo             3.0
                       521.0
Name: value, dtype: float64

答案 1 :(得分:0)

是的,正在进行一些奇怪的排序。中的例子 the argsort docs

x = np.array([3, 1, 2])
np.argsort(x)

给出排序顺序:

array([1, 2, 0])

人们会认为最终的顺序是 2,3,1。但是 x[np.argsort(x)] 给出了 1,2,3。去图。