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

如何正确使用numpy.searchsorted实现DataFrame列按区间映射左边界值

问题原因

你原来的代码逻辑偏差来自np.searchsorted返回值的含义:默认返回的是目标值可插入的第一个位置,对应区间的右边界索引,直接取会得到右边界值,和你要取左边界的需求不符。

最小改动修正方案

仅需要修改最后一行赋值代码即可,调整side参数为right,再将返回的索引减1:

Example["Spcx"] = Spaces[np.searchsorted(Spaces, Example["Spcx"], side = 'right') - 1]

验证结果

运行修改后的代码,输出的Spcx列和你预期的结果完全一致:

Spcx
0  0.000
1  0.000
2  0.125
3  0.100
4  0.100
5  0.100
6  0.125
7  0.150
8  0.225
9  0.200
10 0.125
11 0.125

可选Pandas原生实现方案

如果你不想依赖Numpy接口,也可以用Pandas自带的cut方法实现,可读性更强:

Example["Spcx"] = pd.cut(Example["Spcx"], bins=Spaces, right=False, labels=Spaces[:-1]).astype(float)

参数说明:

  • bins=Spaces:用你定义的列表作为区间划分边界
  • right=False:区间为左闭右开,完全匹配你的规则
  • labels=Spaces[:-1]:每个区间直接映射为对应左边界值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:36:07