Python 如何在数据帧上应用范围查找?

Python 如何在数据帧上应用范围查找?,python,pandas,numpy,Python,Pandas,Numpy,我有以下数据帧 Name X Jack 2 Ann 4 John 18 和下面的查找表 X_Min X_Max Y 2 2 3 7 4 8 15 9 16 25 其中X_Min和X_Max是第一个数据帧中查找值X的范围。我想将查找表应用于我的数据帧,以获得以下结果 Name X Y(Targeted) Jack 2 2 Ann 4 4 John 18 25 非常感

我有以下数据帧

Name   X 
Jack   2
Ann    4
John   18
和下面的查找表

X_Min X_Max Y
      2     2
3     7     4
8     15    9
16          25
其中
X_Min
X_Max
是第一个数据帧中查找值X的范围。我想将查找表应用于我的数据帧,以获得以下结果

Name   X    Y(Targeted)
Jack   2    2
Ann    4    4
John   18   25
非常感谢

使用替换
X_Min
中的
-inf的第一个未定义值,以及
np.inf的最后一个
X_Max
缺失值:

print (df2)
   X_Min  X_Max   Y
0    NaN    2.0   2
1    3.0    7.0   4
2    8.0   15.0   9
3   16.0    NaN  25


i = pd.IntervalIndex.from_arrays(df2['X_Min'].fillna(-np.inf), 
                                 df2['X_Max'].fillna(np.inf), 'both')
print (i)
IntervalIndex([[-inf, 2.0], [3.0, 7.0], [8.0, 15.0], [16.0, inf]],
              closed='both',
              dtype='interval[float64]')
因此,可能的筛选值包括:

编辑:

如果只想使用
X_Max
列:

i = pd.IntervalIndex.from_arrays(df2['X_Max'].add(1).shift().fillna(-np.inf), 
                                 df2['X_Max'].fillna(np.inf), 'both')
print (i)
IntervalIndex([[-inf, 2.0], [3.0, 7.0], [8.0, 15.0], [16.0, inf]],
              closed='both',
              dtype='interval[float64]')

最后一个值的X_max有错误值?这是预期值,表示任何大于等于16的值。我还删除了第一行的X_最小值。非常非常感谢。还有一个问题,是否可以删除X_最小值,因为它等于前一行的X_最大值
i = pd.IntervalIndex.from_arrays(df2['X_Max'].add(1).shift().fillna(-np.inf), 
                                 df2['X_Max'].fillna(np.inf), 'both')
print (i)
IntervalIndex([[-inf, 2.0], [3.0, 7.0], [8.0, 15.0], [16.0, inf]],
              closed='both',
              dtype='interval[float64]')