Skip to main content
 首页 » 编程设计

python之选择符合组条件的行

2025年05月04日20zhengyun_ustc

我有一个 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