Python 在前一行中出现某个值后删除多行的最佳实践?

Python 在前一行中出现某个值后删除多行的最佳实践?,python,pandas,numpy,Python,Pandas,Numpy,我的数据如下所示: Journey ID Visit ID Date Conversion 0 1 1 20200101 1 1 1 2 20200102 1 2 1 3 20200103 0 3 2 4 20200104 0 4

我的数据如下所示:

   Journey ID  Visit ID      Date  Conversion
0           1         1  20200101           1
1           1         2  20200102           1
2           1         3  20200103           0
3           2         4  20200104           0
4           2         5  20200105           1
5           3         6  20200106           1
6           3         7  20200107           0

我的目标是删除转换后在旅程ID中出现的所有行。无论行的内容是什么,都要经过行与行的转换。在本例中,应删除索引为1、2和6的行

我被困在这里有一段时间了。我尝试过变换列和掩蔽条件,但它变得复杂,并没有真正起作用

我需要一个安全、可扩展的解决方案,用于处理超过200万行的数据,该解决方案工作安全且易于验证

您可以使用以下方法复制示例数据集:

d = {'Journey ID': [1,1,1,2,2,3,3],
     'Visit ID': [1,2,3,4,5,6,7],
     'Date': [20200101,20200102,20200103, 20200104, 20200105,20200106,20200107],
     'Conversion': [1,1,0,0,1,1,0]}
data = pd.DataFrame(data = d)


IIUC,您可以尝试使用
cumsum
groupby

out = data[data['Conversion'] == data.groupby('Journey ID')['Conversion'].cumsum()]

以下是可视化的逻辑:

   Journey ID  Visit ID      Date  Conversion  cumsum_Journey  delete
0           1         1  20200101           1               1   False
1           1         2  20200102           1               2    True
2           1         3  20200103           0               2    True
3           2         4  20200104           0               0   False
4           2         5  20200105           1               1   False
5           3         6  20200106           1               1   False
6           3         7  20200107           0               1    True
   Journey ID  Visit ID      Date  Conversion  cumsum_Journey  delete
0           1         1  20200101           1               1   False
1           1         2  20200102           1               2    True
2           1         3  20200103           0               2    True
3           2         4  20200104           0               0   False
4           2         5  20200105           1               1   False
5           3         6  20200106           1               1   False
6           3         7  20200107           0               1    True