如果列属于区间数据类型,则数据框过滤列

Ali*_*Ali 4 python dataframe pandas

我有一个数据帧数组,其中包含一些列,其中之一是“时间”我想过滤时间处于特定间隔的行

为了简化问题,我制作了一个具有整数值和整数间隔的数据框

data=pd.DataFrame({'A':[1,2,3,4,5,6,7,8,9]})
interval=pd.Interval(1,4)
data[data['A'] in interval]
Run Code Online (Sandbox Code Playgroud)

它显示: ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

但预期结果是 [2,3,4]

piR*_*red 8

between

pandas.Series.between将返回一个可用于过滤数据帧的布尔掩码。

data[data.A.between(1, 4)]

   A
0  1
1  2
2  3
3  4
Run Code Online (Sandbox Code Playgroud)

query

pandas.DataFrame.query也可以用来过滤

data.query('1 <= A <= 4')

   A
0  1
1  2
2  3
3  4
Run Code Online (Sandbox Code Playgroud)

isin

pandas.Series.isin可以在特殊整数情况下使用range. 类似于between我们创建一个布尔掩码。

data[data.A.isin(range(1, 5))]

   A
0  1
1  2
2  3
3  4
Run Code Online (Sandbox Code Playgroud)