首页 > 解决方案 > 如果列是间隔数据类型,则数据框过滤列

问题描述

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

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

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

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

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

标签: pythonpandasdataframe

解决方案


between

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

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

   A
0  1
1  2
2  3
3  4

query

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

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

   A
0  1
1  2
2  3
3  4

isin

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

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

   A
0  1
1  2
2  3
3  4

推荐阅读