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

ldioqlga  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(83)

此问题在此处已有答案

Pandas keep rows after a condition is true for each group(2个答案)
昨天关门了。
我更愿意详细地解释它,因为我很难用标题来概括它。
给定如下所示的 Dataframe :

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

我想过滤它,使它只返回id列中的值,这些值在type中至少显示为new,但一旦满足此条件,我希望属于此ID的其余记录留在传出DF中。换句话说,它应该如下所示:

id        type
1         new
2         new
2         new repeater
2         repeater
4         new
4         new repeater
6         new
vx6bjr1n

vx6bjr1n1#

使用带bollean掩码的GroupBy.cummax测试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

相关问题