You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用numpy.isclose为DataFrame按指定容差生成adjusted列?

批量基于容差映射数值到指定基准值

数据集与需求

原始数据代码

import numpy as np
import pandas as pd

data = {
         'value':[9.1,10.5,11.8,
                  20.1,21.2,22.8,
                  9.5,10.3,11.9,
                  ]
        }

df = pd.DataFrame(data, columns = ['value'])

原始DataFrame输出

value
0    9.1
1   10.5
2   11.8
3   20.1
4   21.2
5   22.8
6    9.5
7   10.3
8   11.9

需求说明

需要添加名为adjusted的新列,使用numpy.isclose函数,将落在10±1范围内的数值映射为10,落在21±1范围内的数值映射为21,期望结果如下:

value  adjusted
0    9.1        10
1   10.5        10
2   11.8        10
3   20.1        21
4   21.2        21
5   22.8        21
6    9.5        10
7   10.3        10
8   11.9        10

尝试的代码(仅支持单个基准值)

np.isclose(df['value'], 10, atol=1)

解决方案(一行代码实现)

利用np.select批量处理多组条件与映射规则,结合np.isclose完成容差判断:

df['adjusted'] = np.select([np.isclose(df['value'], 10, atol=1), np.isclose(df['value'], 21, atol=1)], [10, 21])

代码说明

  • np.select接收两个核心参数:第一个是条件列表,第二个是对应条件满足时的取值列表
  • np.isclose(df['value'], 10, atol=1)用于判断数值是否处于10±1的范围内(atol为绝对容差)
  • 条件按顺序匹配,满足第一个条件则映射为10,满足第二个则映射为21

内容的提问来源于stack exchange,提问作者silent_hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:35:27