Python 过滤数据帧中给定值介于两列值之间的所有行

Python 过滤数据帧中给定值介于两列值之间的所有行,python,pandas,dataframe,Python,Pandas,Dataframe,我已经有了这个dataframe,它包含两个带浮点数的列,我想基于这个值10.9提取一个dataframe,它不在dataframe上,因此它将返回10.9范围内的dataframe,请参见下表 预期结果:当我使用3.10进行过滤时,我希望得到下面的数据帧,提前谢谢 如果要经常执行此操作,请生成: val = 3.1 idx = pd.IntervalIndex.from_arrays( df['Start_time(in sec)'], df['End_time(in secs)'])

我已经有了这个dataframe,它包含两个带浮点数的列,我想基于这个值10.9提取一个dataframe,它不在dataframe上,因此它将返回10.9范围内的dataframe,请参见下表

预期结果:当我使用3.10进行过滤时,我希望得到下面的数据帧,提前谢谢

如果要经常执行此操作,请生成:

val = 3.1
idx = pd.IntervalIndex.from_arrays(
    df['Start_time(in sec)'], df['End_time(in secs)'])

idx.contains(val)
#  array([False, False, False, False,  True])

df[idx.contains(val)]  

   Words  Start_time(in sec)  End_time(in secs)  Time_per_words
4  about                 3.0                3.2             6.2
否则,此一次性布尔索引操作就足够了:

df[(df['Start_time(in sec)'] <= val) & (val <= df['End_time(in secs)'])]

   Words  Start_time(in sec)  End_time(in secs)  Time_per_words
4  about                 3.0                3.2             6.2
如果要经常执行此操作,请生成:

val = 3.1
idx = pd.IntervalIndex.from_arrays(
    df['Start_time(in sec)'], df['End_time(in secs)'])

idx.contains(val)
#  array([False, False, False, False,  True])

df[idx.contains(val)]  

   Words  Start_time(in sec)  End_time(in secs)  Time_per_words
4  about                 3.0                3.2             6.2
否则,此一次性布尔索引操作就足够了:

df[(df['Start_time(in sec)'] <= val) & (val <= df['End_time(in secs)'])]

   Words  Start_time(in sec)  End_time(in secs)  Time_per_words
4  about                 3.0                3.2             6.2

喜欢区间指数法。感谢您的回复,这里不起作用,df[df['Start_timein sec']val是单值还是列表?@nath我假设前者是单值。非常感谢@cs5,它终于起作用了,也许是我的一个错误没有起作用,因为我使用了一个旧变量,它是一个包含值的列表,我没有去掉它df[df['Start\u timein sec']喜欢区间指数法。感谢您的回复,这里不起作用,df[df['Start_timein sec']val是单值还是列表?@nath我假设前者是单值。非常感谢@cs5,它终于起作用了,也许是我的一个错误没有起作用,因为我使用了一个旧变量,它是一个包含值的列表,我没有去掉它df[df['Start\u timein sec']