Pandas : How can I assign group number according to specific value?

标签 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

预期结果:

    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

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

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

但不知道如何在 Pandas 中实现它

需要你的帮助

最佳答案

我相信需要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

关于 Pandas : How can I assign group number according to specific value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49878841/

相关文章:

python - 对数据框中的值进行排序

python - 在数据帧中应用累积校正因子

csv - 将缺失值的整数导出到 Pandas 中的 csv

python - 根据索引从数据框中删除某些行

python - 我如何解决 'UserWarning: DataFrame columns are not unique, some columns will be omitted' ?

python - 通过提取 DatetimeIndex 的时间而不使用 for 循环,在一个图上绘制每一天

python - 如何将字典元组转换为有组织的数据框?

python - 如何使用 python pandas 在本地系统 Jupyter Notebook 中读取两个较大的 5GB csv 文件?如何在本地连接两个数据框进行数据分析?

python - PANDAS:int32溢出?无法建立枢纽分析表

python - 在 Pandas 中读取、选择和重新排列列