如果值在一个间隔之间,请在另一列的同一行上选择该值

时间:2019-03-07 12:50:46

标签: python pandas

我的数据框如下:

        s     gamma_star    
0   0.000000    0.6261
1   0.000523    0.6262  
2   0.000722    0.6263  
3   0.000861    0.6267  
4   0.000972    0.6269  
5   0.001061    0.6260  
6   0.001147    0.6263  
7   0.001218    0.6261  

我有一个值s = 0.000871,我需要查找的是属于此s的相关gamma_star。在上面的示例中,s3 0.000861 0.62614 0.000972 0.6261之间,则与之相关的gamma_star0.6267!我有点卡住,不知道该如何交易,有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以这样做:

df.loc[(df.s > s).idxmax()-1, 'gamma_star']
# 0.6267

使用条件将指示满足条件的起点

(df.s > s)

0    False
1    False
2    False
3    False
4     True
5     True
6     True
7     True
Name: s, dtype: bool

,通过使用idxmax(),我们可以找到间隔的开始:

(df.s > s).idxmax()-1
# 3

答案 1 :(得分:0)

如果您通过s值,则可以循环执行此操作。

for i in range(len(s)-1):
    if given_value > s[i] and given_value < s[i+1]:
        gamma_s_wanted = gamma_star[i]
        break
    else:
        gamma_s_wanted = gamma_star[-1]