gpt4 book ai didi

python - 在数据框中使用数组对列进行排序

转载 作者:行者123 更新时间:2023-11-28 20:33:32 26 4
gpt4 key购买 nike

我正在寻找一种方法来按由数组组成的列对数据框进行排序。下面是我的数据框,其中包含索引、数组 (a) 和值 (b)。

index    a   b
0 [0] 0.014066
1 [1] 0.569054
2 [2] 0.379795
3 [3] 0.037084
4 [4] 0.699488
5 [5] 0.191816
6 [6] 0.107417
7 [0, 4] 0.008951
8 [0, 5] 0.002558
9 [0, 6] 0.002558
10 [1, 4] 0.448849
11 [1, 5] 0.089514
12 [1, 6] 0.030691
13 [2, 4] 0.217391
14 [2, 5] 0.095908
15 [2, 6] 0.066496
16 [3, 4] 0.024297
17 [3, 5] 0.003836
18 [3, 6] 0.007673
19 [0, 3] 0.000000
20 [1, 3] 0.000000
21 [2, 3] 0.000000

正如所见,最后 3 个数组的排序方式与其他数组不同。我想要的是:

index    a   b
0 [0] 0.014066
1 [1] 0.569054
2 [2] 0.379795
3 [3] 0.037084
4 [4] 0.699488
5 [5] 0.191816
6 [6] 0.107417
-> [0,3] here
7 [0, 4] 0.008951
8 [0, 5] 0.002558
9 [0, 6] 0.002558
-> [1,3] here
10 [1, 4] 0.448849
11 [1, 5] 0.089514
12 [1, 6] 0.030691
-> [2,3] here
13 [2, 4] 0.217391
14 [2, 5] 0.095908
15 [2, 6] 0.066496
16 [3, 4] 0.024297
17 [3, 5] 0.003836
18 [3, 6] 0.007673

希望这是有道理的。提前致谢! df.sort_values('a') 似乎不起作用。仅基于 b 中的值。

最佳答案

来自jpp的数据

from natsort import natsorted
natsorted(s)
Out[940]: [[0], [0, 3], [0, 4], [1], [2], [3, 6]]

更新

s.iloc[natsorted(range(len(s)), key=lambda k: (len(s[k]),s[k]))]
Out[997]:
0 [0]
1 [1]
2 [2]
5 [0, 3]
3 [0, 4]
4 [3, 6]
dtype: object

关于python - 在数据框中使用数组对列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50414016/

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