如何在 Python 中的特定范围内替换数据框中的数字?

Ami*_*mit 2 python pandas

我有一个数据集,它有一个名为“EntrySec”的变量,如果它落在某个范围内,我想替换这些值。

Entrysec
1
21
32
9
43
66
Run Code Online (Sandbox Code Playgroud)

期望:将所有值替换为

10 如果它落在 1-10 之间的范围内
20 如果它落在 11-20之间的范围内
30 如果它落在 21-30 之间的范围内等等

Ric*_*cco 6

这是一个适用于任何数字的非常简单的解决方案(数字在哪个范围内无关紧要)。它将 Pandas DataFrame 列的值四舍五入到接下来的

df["Entrysec"] = df["Entrysec"]//10*10+10
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?

  1. 执行整数除以10(它基本上切断了正常除法的小数部分)。这样你就得到了一个数的位。例如:

    • 43/10=4.3(正常除法)
    • 43//10=4(整数除法)
  2. 乘以 10,得到不带1的原始数。例如:4*10=40。

  3. 添加 10 以获得所需的结果。例如,40+10=50。

编辑

虽然我的解决方案将一个值四舍五入到下一个10,但用户想要将例如 20 舍入到 20(而不是 30)。这可以通过稍微修改我的方法来实现:

df["Entrysec"] = (df["Entrysec"]-1)//10*10+10
Run Code Online (Sandbox Code Playgroud)

通过这种方式,可以获得所需的输出。以下是一些角落案例:

  • 9 四舍五入为 10
  • 10 四舍五入为 10
  • 11 四舍五入为 20

请注意,使用这种方法,0 会四舍五入为 0,正如隐式要求的那样。