我有一个数据集,它有一个名为“EntrySec”的变量,如果它落在某个范围内,我想替换这些值。
Entrysec
1
21
32
9
43
66
Run Code Online (Sandbox Code Playgroud)
期望:将所有值替换为
10 如果它落在 1-10 之间的范围内
20 如果它落在 11-20之间的范围内
30 如果它落在 21-30 之间的范围内等等
这是一个适用于任何数字的非常简单的解决方案(数字在哪个范围内无关紧要)。它将 Pandas DataFrame 列的值四舍五入到接下来的十:
df["Entrysec"] = df["Entrysec"]//10*10+10
Run Code Online (Sandbox Code Playgroud)
它是如何工作的?
执行整数除以10(它基本上切断了正常除法的小数部分)。这样你就得到了一个数的十位。例如:
乘以 10,得到不带1的原始数。例如:4*10=40。
编辑
虽然我的解决方案将一个值四舍五入到下一个10,但用户想要将例如 20 舍入到 20(而不是 30)。这可以通过稍微修改我的方法来实现:
df["Entrysec"] = (df["Entrysec"]-1)//10*10+10
Run Code Online (Sandbox Code Playgroud)
通过这种方式,可以获得所需的输出。以下是一些角落案例:
请注意,使用这种方法,0 会四舍五入为 0,正如隐式要求的那样。