Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据条件删除数据帧中的前几行_Python_Pandas_Dataframe_Delete Row - Fatal编程技术网

Python 根据条件删除数据帧中的前几行

Python 根据条件删除数据帧中的前几行,python,pandas,dataframe,delete-row,Python,Pandas,Dataframe,Delete Row,我有一个带有用户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\u i

我有一个带有用户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\u 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

如何以智能方式执行此操作?

的想法是测试组中是否至少有一个
,然后针对此组删除以前的
行:

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
因此,一旦找到“是”,您只删除前两行?您现在的输出是“是”之后的前两行和最后4行。这是您想要实现的吗?@AnnaSemjén当找到“是”时,我想将前面的行删除到找到“是”的同一用户id。要删除的前一行数可以根据用户的不同而变化