我有一个数据框,看起来像:
date | test_hour
------------+-----------
2000-01-01 | 1
2000-01-01 | 2
2000-01-01 | 3
2000-01-02 | 1
2000-01-02 | 2
2000-01-02 | 3
2000-01-02 | 4
2000-01-03 | 1
2000-01-03 | 2
我需要删除所有缺少test_hours = 1、2和3的日期。因此,结果数据框不应包含带有的行2000-01-03
,因为它缺少test_hour
= 3:
date | test_hour
------------+-----------
2000-01-01 | 1
2000-01-01 | 2
2000-01-01 | 3
2000-01-02 | 1
2000-01-02 | 2
2000-01-02 | 3
2000-01-02 | 4
我目前正在使用for循环来确定要删除的日期,但这似乎违反了使用数据框的目的。有什么更有效的方法可以做到这一点?
这是filter
与isin
和一起使用的一种方法all
df.groupby('date').filter(lambda x : pd.Series([1,2,3]).isin(x['test_hour']).all())
date test_hour
0 2000-01-01 1
1 2000-01-01 2
2 2000-01-01 3
3 2000-01-02 1
4 2000-01-02 2
5 2000-01-02 3
6 2000-01-02 4
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句