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]')