我有一个小df,如下所示:

Interval  Factor Prev_Interval                              
0.0002     1.0      0.0000
0.0005     1.5      0.0002
0.0010     2.0      0.0005
0.0050     2.5      0.0010
0.0150     3.0      0.0050
0.0500     3.5      0.0150
0.2500     4.0      0.0500
0.5000     4.2      0.2500
2.0000     4.3      0.5000

我需要找到'Factor',其中我计算的浮点数是prev_interval和Interval.因此,如果浮点数I计算= 0.010,则输出为3.0 -即在0.0050和0.015之间.

有什么主意吗?

推荐答案

如果间隔是排序的且连续的,则最有效的方法是使用numpy.searchsorted:

x = 0.010

out = df['Factor'].iloc[np.searchsorted(df['Interval'], x)]

使用boolean indexing的通用解决方案:

out = df.loc[df['Interval'].gt(x) & df['Prev_Interval'].lt(x), 'Factor'].squeeze()

输出:3.0

Python-3.x相关问答推荐

如何使用PySide6创建切换框架?

在Python中从列创建新行

Heroku 中的未知错误代码缺少一个或多个参数

CSV-DAT 转换时将引号添加到数据中

从另一个云函数调用带有仅允许内部流量标志的云函数时出现问题

如何立即从asyncio.Task获取异常?

基于其他列的条件向Panda数据框中添加值到新列

如何在 20 秒后重复使用 Pillow 在现有图像上创建新图像?

!date 的命令无法从 jupyter notebook 运行

如何在 Python 中 cv2 的窗口标题上动态更新 FPS

使用正则表达式提取字符串之间的文本

为什么 Python 枚举中的可变值是同一个对象?

python - 错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT

aiohttp+sqlalchemy:在回滚无效事务之前无法重新连接

如何在多核上运行 Keras?

在 Python 3 中获取所有超类

BeautifulSoup 的 Python 3 兼容性

使用 python2 和 python3 创建一个 virtualenv

用 Anaconda 安装了一个包,无法在 Python 中导入

字典理解中的操作顺序