我有一个 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并非所有行的时间戳都在范围内,因此不包括它们。
如何做到这一点?
请您参考如下方法:
您可以组合 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
