Python 如何检查特定列中的某个范围是否覆盖了该列中的特定值?

Python 如何检查特定列中的某个范围是否覆盖了该列中的特定值?,python,pandas,Python,Pandas,我的问题与这个问题相反: 我没有在列中设置一个值来与特定的范围进行比较,而是在列中设置了一个范围,并尝试从数据帧中获取特定值的所有行 data = {'Reward_Level':['0-4','0-4', '5-10', '5-10', '11-16'], 'reward' :['1', '2', '3', '4', '10']} df = pd.DataFrame(data) value = 2 # want to return all the rows whose ran

我的问题与这个问题相反:

我没有在列中设置一个值来与特定的范围进行比较,而是在列中设置了一个范围,并尝试从数据帧中获取特定值的所有行

data = {'Reward_Level':['0-4','0-4', '5-10', '5-10', '11-16'],
        'reward' :['1', '2', '3', '4', '10']}
df = pd.DataFrame(data)
value = 2 # want to return all the rows whose range in 'Reward_Level' covers this value
df = df["How do I do this part?"]
# df >> gives me the rows for ['0-4', '1'] and ['0-4', '2']

我知道如何做的方法是将
奖励级别
分为两个单独的列,与最小值进行比较,然后与最大值进行比较,但有没有一种方法可以在不将这些列分为新列的情况下进行此操作?

首先创建一个辅助数据框,其中包含每个范围的提取限制:

df2 = df.Reward_Level.str.extract(r'(?P<v1>\d+)-(?P<v2>\d+)').astype('int')
df[df2.v1.le(value) & df2.v2.ge(value)]