python - 选择符合组条件的行
问题描述
我有一个 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
推荐阅读
- arrays - 如何分解二维数组算法?
- react-select - 当它不再在选项中时,我可以重置不受控制的值吗
- html - 如果我有返回,为什么我有一个 goroutine
- alter - 是否可以更改表以包含对 python 数据联合中上游表的引用?
- flutter - 颤振中的提供者不会改变屏幕
- beta-distribution - 使用专家意见计算伽马分布的参数
- reactjs - React with Router v5 Error: Objects are not valid as a React child (found: object with keys {children})
- c# - 来自多个下拉列表的 ASP.NET MVC Foreach
- c# - 从 SQLite 切换到 SQL Server?
- python - 根据当前时间返回下一个间隔的开始和结束