[英]Delete previous rows in Pandas Dataframe based on condition
我有一个带有 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
当列info
为“是”时,我想从user_id
删除前一行。 在上面的情况下会像:
User_id type info
31 R*1005 no
31 R*10335 no
25 R*9017 no
25 R*9015 no
46 R*9470 no
如何以聪明的方式做到这一点?
想法是测试组中是否至少有一个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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.