I have a small df like this:

```
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
```

I need to find the ‘Factor’ where a float I calculated is < prev_interval and > Interval. So, if the float I calculates = 0.010, the output is 3.0 – i.e. between 0.0050 and 0.015.

Any ideas?

### >Solution :

If the intervals are sorted and successive, the most efficient is to use `numpy.searchsorted`

:

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

A generic solution using boolean indexing:

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

Output: `3.0`