根据另一个列值隔离列中包含ID的行,但保留原始ID的所有记录



我宁愿用图形化的方式来解释,因为我很难在标题中总结出来。

给定如下所示的数据帧:

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

最新更新