Pandas:如何根据特定值分配组号?

use*_*632 3 pandas

数据框

pd.DataFrame({'a': range(20)})

>>  
    a
0   0
1   1
2   2
3   3
4   4
5   5
6   6
7   7
8   8
9   9
10  10
11  11
12  12
13  13
14  14
15  15
16  16
17  17
18  18
19  19
Run Code Online (Sandbox Code Playgroud)

预期结果:

    a   group_num
0   0   1
1   1   1
2   2   2
3   3   2
4   4   3
5   5   3
6   6   4
7   7   4
8   8   5
9   9   5
10  10  6
11  11  6
12  12  7
13  13  7
14  14  8
15  15  8
16  16  9
17  17  9
18  18  10
19  19  10
Run Code Online (Sandbox Code Playgroud)

我想要做的是根据其值分配组号,从 1 到 9。

这个想法是对这些值进行排序,并将它们分为 10 组,并为每组分配 1 到 9。

但不知道如何实施Pandas

需要你的帮助

jez*_*ael 5

我认为需要qcut大小均匀的垃圾箱:

df['b'] = pd.qcut(df['a'], 10, labels=range(1, 11))
print (df)
     a   b
0    0   1
1    1   1
2    2   2
3    3   2
4    4   3
5    5   3
6    6   4
7    7   4
8    8   5
9    9   5
10  10   6
11  11   6
12  12   7
13  13   7
14  14   8
15  15   8
16  16   9
17  17   9
18  18  10
19  19  10
Run Code Online (Sandbox Code Playgroud)