首页 > 解决方案 > 你能解释一下输出:diff.sort_values(ascending=False).index.astype

问题描述

任何人都可以解释以下陈述。

list(diff.sort_values(ascending=False).index.astype(int)[0:5])

输出: Int64Index([24, 26, 17, 2, 1], dtype='int64')

它首先排序,但是索引在做什么,我如何获得 24, 26, 17, 2 ,1 ?

差异是系列

    ipdb> diff
1     0.017647
2     0.311765
3    -0.060000
4    -0.120000
5    -0.040000
6    -0.120000
7    -0.190000
8    -0.200000
9    -0.100000
10   -0.011176
11   -0.130000
12    0.008824
13   -0.060000
14   -0.090000
15   -0.060000
16    0.008824
17    0.341765
18   -0.140000
19   -0.050000
20   -0.060000
21   -0.040000
22   -0.210000
23    0.008824
24    0.585882
25   -0.060000
26    0.555882
27   -0.031176
28   -0.060000
29   -0.170000
30   -0.220000
31   -0.170000
32   -0.040000
dtype: float64

标签: pythonpandas

解决方案


这是正在发生的事情:

  • diff.sort_values(ascending) - 对系列进行排序。默认情况下,ascending 为 True,但您将其保留为 false,因此它以降序返回排序后的 Series。
  • pandas.Series.index 返回索引的行标签(在您的情况下为排序数字 1 - 32)
  • .as_type(int) 将索引行标签类型转换为整数。
  • [0: 5] 只选择单元格 0 到 5

让我知道这是否有帮助!


推荐阅读