我有一个Pandas DataFrame df
,其外观如下:
ID Timestamp x y
1 10 322 222
1 12 234 542
1 14 22 523
2 55 222 76
2 56 23 87
2 58 322 5436
3 100 322 345
3 150 22 243
3 160 12 765
3 170 78 65
现在,我希望保留时间戳介于12到155之间的所有行。这可以通过df[df["timestamp"] >= 12 & df["timestamp"] <= 155]
来完成。但是我只想包含相应ID组中所有时间戳均在范围内的行。因此,在上面的示例中,它应导致以下数据帧:
ID Timestamp x y
2 55 222 76
2 56 23 87
2 58 322 5436
对于ID == 1
和ID == 3
,并非所有行的时间戳都在该范围内,这就是为什么不包括它们的原因。
这怎么办?
答案 0 :(得分:3)
您可以结合使用groupby(“ ID”)和过滤器:
df.groupby("ID").filter(lambda x: x.Timestamp.between(12, 155).all())
ID Timestamp x y
3 2 55 222 76
4 2 56 23 87
5 2 58 322 5436
答案 1 :(得分:2)