используя argsort()
мы можем получить его как показано ниже.
input = 0.80
i = datetime.now()
next_time = i + df.ix[(df['prob']-input).abs().argsort()[:1]]['time']
Полный пример:
import pandas as pd
from datetime import datetime, timedelta
df = pd.DataFrame(columns = ['prob', 'time'])
df.loc[len(df)] = [0.975909, timedelta(hours=0, minutes=0, seconds=0)]
df.loc[len(df)] = [0.957819, timedelta(hours=1, minutes=0, seconds=0)]
df.loc[len(df)] = [0.937498, timedelta(hours=2, minutes=0, seconds=0)]
df.loc[len(df)] = [0.912779, timedelta(hours=3, minutes=0, seconds=0)]
df.loc[len(df)] = [0.894139, timedelta(hours=4, minutes=0, seconds=0)]
df.loc[len(df)] = [0.873184, timedelta(hours=5, minutes=0, seconds=0)]
df.loc[len(df)] = [0.847748, timedelta(hours=6, minutes=0, seconds=0)]
df.loc[len(df)] = [0.828572, timedelta(hours=7, minutes=0, seconds=0)]
df.loc[len(df)] = [0.807029, timedelta(hours=8, minutes=0, seconds=0)]
df.loc[len(df)] = [0.780847, timedelta(hours=9, minutes=0, seconds=0)]
df.loc[len(df)] = [0.761082, timedelta(hours=10, minutes=0, seconds=0)]
df.loc[len(df)] = [0.738855, timedelta(hours=11, minutes=0, seconds=0)]
df.loc[len(df)] = [0.711733, timedelta(hours=12, minutes=0, seconds=0)]
input = 0.80
i = datetime.now()
next_time = i + df.ix[(df['prob']-input).abs().argsort()[:1]]['time']
print(i)
print(next_time)