我有下面的数据框和百分位数,我想分配0-9之间的值,以各自的百分位数。你知道吗
这是输入:
a
1 0.3038
2 0.0572
3 0.1153
4 0.2168
5 0.5688
6 0.6291
7 0.9416
8 0.7438
9 0.2242
10 0.5662
这是期望的输出:
a b
1 0.3038 3
2 0.0572 0
3 0.1153 1
4 0.2168 2
5 0.5688 5
6 0.6291 6
7 0.9416 9
8 0.7438 7
9 0.2242 2
10 0.5662 5
另外,如果列“a”中的值是1.00,我想返回值9。 例如:
a b
1 1.0000 9
谢谢你的帮助。你知道吗
更新的解决方案
感谢@Peter Leimbigler在注释中提供了以下建议,确保正确处理1.0映射到9的需求:
或者,坚持前面解决方案中的
clip_upper()
思想:上述解决方案中的
0.9
实际上可以是任何数字[0.9, 1)
,并将按预期工作。前面的解决方案中的问题是这里使用了1
,这意味着没有向下舍入正好1.0
的值。你知道吗我将保留下面的原始解决方案,因为它已被OP接受,但正如@Peter Leimbigler所指出的,它没有正确处理1.0->;9特例。你知道吗
以前的解决方案
如果我理解正确:
给出了与问题中相同的结果,并解释了关于正好是1的数字的警告。你知道吗
相关问题 更多 >
编程相关推荐