У меня есть фрейм данных, который выглядит следующим образом:
user1,product1,0
user1,product2,2
user1,product3,1
user1,product4,2
user2,product3,0
user2,product2,2
user3,product4,0
user3,product5,3
Фрейм данных содержит миллионы строк. Мне нужно пройти через каждую строку, и если значение в последнем столбце равно 0, сохранить этот номер продукта, в противном случае прикрепить номер продукта к предыдущему номеру продукта со значением = 0, а затем записать в новый фрейм данных.
Например, результирующая матрица должна быть
user1,product1
user1,product1product2
user1,product1product3
user1,product1product4
user2,product3
user2,product3product2
user3,product4
user3,product4product5
Я написал цикл for
для прохождения каждой строки, и он работает, но очень-очень медленно. Как я могу ускорить это? Я пытался векторизовать его, но я не уверен, как, потому что мне нужно проверить значение предыдущей строки.