数据框过滤列是否为间隔数据类型

时间:2019-04-24 14:35:33

标签: python pandas dataframe

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

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

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

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

使用您的interval

data.loc[(data.A>=interval.left) & (data.A<interval.right)]
Out[245]: 
   A
0  1
1  2
2  3
3  4

答案 2 :(得分:1)

使用Series.between

s = data[data.A.between(interval.left+1, interval.right)]

print(s)
   A
1  2
2  3
3  4

或使用Boolean indexing

l = data[(data.A > interval.left) & (data.A <= interval.right)]

print(l)
   A
1  2
2  3
3  4