我有一个数据框数组,其中包含一些列,其中之一是“时间” 我想过滤时间在特定间隔内的行
为简化问题,我制作了一个带有整数值和整数间隔的数据框
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]
答案 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)
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