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