我有一个小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相关问答推荐

如何获得大Pandas 的常见时间间隔

PythonPandas 创建一个列并添加到DataFrame

文件名中的文件打开和撇号

在Python代码中包含NAN值时,以两个矩阵计算RMSE

可以在 Python 的上下文管理器中调用 sys.exit() 吗?

使用 iloc 或 loc 对多列进行过滤

如何将值映射到具有上限和下限的新列

如何创建与导航抽屉一起使用的导航栏

如何提高 snowpark 程序的性能?

如何在 histplot 中标记核密度估计

如何转置和 Pandas DataFrame 并命名新列?

如何使用 Selenium 和 Python 作为线程来使用事件(Chrome-Developer-Tools)?

如果值超出上下限(异常值处理),则将值的数据框替换为 np.nan

有效地缩短列表,直到第一次和最后一次出现不同于 None 的值

Python 3.5 中编码 utf-8 和 utf8 的区别

pythondecorator中的变量范围

如何使用 d.items() 更改 for 循环中的所有字典键?

Python 3 中的连接列表

具有不均匀间隙的 Python 范围

什么是ANSI_X3.4-1968编码?