Home > Software design >  Pandas - Find first occurance of number closest to an input value
Pandas - Find first occurance of number closest to an input value

Time:11-30

I have a dataframe like below.

   time  speed
0     1   0.20
1     2   0.40
2     3   2.00
3     4   3.00
4     5   0.40
5     6   0.43
6     7   6.00

I would like to find the first occurance of a number ( in 'Speed' Column) that is closest to an input value I enter.

For example :

input value = 0.43

Expected Output :

Speed : 0.40 & corresponding Time : 2

The speed column should not be sorted for this problem.

I tried the below,but not getting the expected output.

enter image description here

Any help on this would be appreciated.

CodePudding user response:

absolute closest

You can compute the absolute difference to your reference and get the idxmin:

speed_input = 0.43
df.loc[abs(df['speed']-speed_input).idxmin()]

output:

time     6.00
speed    0.43
Name: 5, dtype: float64

first closest with threshold:

i = 0.43
thresh = 0.03
df.loc[abs(df['speed']-i).le(thresh).idxmax()]

output:

time     2.0
speed    0.4
Name: 1, dtype: float64

CodePudding user response:

One idea is round both values:

df[[(df['speed'].round(1)-round(speed_input, 1)).abs().idxmin()]]
  • Related