我宁愿用图形化的方式来解释,因为我很难在标题中总结出来。
给定如下所示的数据帧:
id type
1 new
2 new
2 new repeater
2 repeater
3 repeater
4 new
4 new repeater
5 new repeater
5 repeater
6 new
我想过滤它,所以它只是返回我在type
中至少作为new
出现的列id
中的值,但是一旦满足了这个条件,我希望属于这个ID的剩余记录留在输出DF中。换句话说,它应该像这样:
id type
1 new
2 new
2 new repeater
2 repeater
4 new
4 new repeater
6 new
使用GroupBy.cummax
与bollean掩模进行测试第一匹配条件和boolean indexing
中的滤波器:
df = df[df['type'].eq('new').groupby(df['id']).cummax()]
print (df)
id type
0 1 new
1 2 new
2 2 new repeater
3 2 repeater
5 4 new
6 4 new repeater
9 6 new