谁能解释以下陈述。
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
你的代码返回按降序排序的前 5 个值的index
值列表Series
。
在熊猫系列中打印的第一个"列"称为index
,因此您的代码在排序后将索引的值转换为整数并通过索引切片。
print (diff.sort_values(ascending=False))
24 0.585882
26 0.555882
17 0.341765
2 0.311765
1 0.017647
12 0.008824
23 0.008824
16 0.008824
10 -0.011176
27 -0.031176
32 -0.040000
21 -0.040000
5 -0.040000
19 -0.050000
15 -0.060000
3 -0.060000
13 -0.060000
25 -0.060000
28 -0.060000
20 -0.060000
14 -0.090000
9 -0.100000
6 -0.120000
4 -0.120000
11 -0.130000
18 -0.140000
31 -0.170000
29 -0.170000
7 -0.190000
8 -0.200000
22 -0.210000
30 -0.220000
Name: a, dtype: float64
print (diff.sort_values(ascending=False).index.astype(int))
Int64Index([24, 26, 17, 2, 1, 12, 23, 16, 10, 27, 32, 21, 5, 19, 15, 3, 13,
25, 28, 20, 14, 9, 6, 4, 11, 18, 31, 29, 7, 8, 22, 30],
dtype='int64')
print (diff.sort_values(ascending=False).index.astype(int)[0:5])
Int64Index([24, 26, 17, 2, 1], dtype='int64')
print (list(diff.sort_values(ascending=False).index.astype(int)[0:5]))
[24, 26, 17, 2, 1]
以下是正在发生的事情:
- diff.sort_values(升序( - 对系列进行排序。默认情况下,升序为 True,但您将其保留为 false,因此它按降序返回排序的序列。
- 熊猫。Series.index 返回索引的行标签(在您的情况下为排序数字 1 - 32(
- .as_type(int( 类型转换将索引行标签作为整数。
- [0: 5] 仅选取单元格 0 到 5
让我知道这是否有帮助!