gpt4 book ai didi

python - 使用 sort_index() 时的关键函数

转载 作者:行者123 更新时间:2023-12-05 06:10:58 24 4
gpt4 key购买 nike

在对 Series 的索引进行排序时,我不明白 key 函数是如何工作的。例如我有这样的系列:

(0, 4)     k
(12, 16) a
(24, 28) b
(4, 8) f
(8, 12) g

我希望索引按以下顺序排列:

(0, 4)
(4, 8)
(8, 12)
(12, 16)
(24, 28)

这些不是元组,而只是字符串。当我将它作为列表排序时,我只是创建一个键函数,它向每个元素返回第一个数字,元素按该数字排序。但是在 sort_index() 的文档中据说关键函数应该接收一个系列并返回一个系列。那么它在这里是如何工作的呢?对列表进行排序并更改其索引无济于事,因为值与原始索引分离。

这就是我使用列表的方式。这是数据框。早些时候我创建了 wage_bin 来为每个工资做一个间隔。

  person  col2 col3  wage wage_bin
0 a 5 g 4 (0,4]
1 b 3 e 14 (12,16]
2 c 4 e 25 (24,28]
3 d 8 p 9 (8,12]
4 a 1 s 5 (4,8]
5 d 6 x 12 (8,12]

我理解的g是一个Series类型

g = df.groupby('wage_bin').size()
wage_bin
(0,4] 1
(12,16] 1
(24,28] 1
(4,8] 1
(8,12] 2
dtype: int64

在这里,我从 g 系列的索引中创建了一个列表,并使用分区在 '(' 和 ',' 之间取一个数字进行排序

k = list(g.index)
k.sort(key=lambda x: int(x.partition('(')[2].partition(',')[0]))
print(k)
['(0,4]', '(4,8]', '(8,12]', '(12,16]', '(24,28]']

所以我明白了 key 在 list case 中是如何工作的。我们有一个列表元素,而不是 x。但是当尝试对 sort_series() 使用键函数时,我无法得到任何明智的结果。当 x 是一个系列时,我不明白在函数中用 x 执行什么操作。

最佳答案

您可以:

  1. index 上临时创建一个包含正则表达式 (str.extract()) 的新列。将单引号 ' 之前的最后一个 ) 更改为 ] 如果您使用括号而不是圆括号
  2. 按这个临时列排序
  3. 并删除不需要的列

import pandas as pd
df = pd.DataFrame({'A': {0: '(0, 4)', 1: '(12, 16)', 2: '(24, 28)', 3: '(4, 8)', 4: '(8, 12)'},
'B': {0: 'k', 1: 'a', 2: 'b', 3: 'f', 4: 'g'}}).set_index('A')
df['C'] = df.index.str.extract(',\s+(\d+)\)').astype(int)
df = df.sort_values('C').drop('C',axis=1)
df
Out[1]:
B
A
(0, 4) k
(4, 8) f
(8, 12) g
(12, 16) a
(24, 28) b

关于python - 使用 sort_index() 时的关键函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64160980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com