根据条件删除熊猫数据框中的前几行

时间:2020-03-04 12:48:32

标签: python pandas dataframe delete-row

我有一个带有user_id的数据框以及一些有关它们的信息

User_id   type     info
31       R*1005    no
31       R*10335   no
25       R*1005    no
25       R*243     no
25       R*4918    yes
25       R*9017    no
25       R*9015    no
46       R*9470    no

当列user_id为“是”时,我想从info删除先前的行。 在上面的情况下将是这样的:

User_id   type     info
31       R*1005    no
31       R*10335   no
25       R*9017    no
25       R*9015    no
46       R*9470    no

如何以一种聪明的方式做到这一点?

1 个答案:

答案 0 :(得分:1)

是否测试组中是否至少有一个yes,然后为此组删除先前的yes行,就是这样:

m = df['info'].eq('yes')
g = m.groupby(df['User_id'])

m1 = g.transform('any')
m2 = g.cumsum().ne(0)

df = df[(~m1 | m2) & ~m]
print (df)
   User_id     type info
0       31   R*1005   no
1       31  R*10335   no
5       25   R*9017   no
6       25   R*9015   no
7       46   R*9470   no