У меня есть датафрейм, который содержит информацию об инвентаризации.Один столбец - тип продукта (т. Е. A, B, C), один столбец - номер инвентаря для каждого продукта, один столбец - дата (т. Е. День 1, день 2, день 3).Например (см. Таблицу ниже), в день 1 у нас есть 1 продукт A;на второй день у нас есть 3 продукта A и 2 продукта B;на 3-й день у нас есть 6 продуктов B.
product | inventory | day
A | 1 | 1
A | 3 | 2
B | 2 | 2
B | 6 | 3
Я хотел бы рассчитать изменение продукта для каждого дня.Желаемая результирующая таблица показана ниже.Хитрость заключается в том, что каждый день некоторые продукты могут отсутствовать, или может появиться какой-то новый продукт. Например, на 3-й день продукт A больше не существует (другими словами, все 3 продукта A на 2-й день исчезают на 3-й день).).На второй день появляется новый продукт B, поскольку у нас нет запаса для него на первый день. Помните, что некоторые продукты могут исчезнуть в определенный день и вернуться позже, а затем снова исчезнуть.
product | inventory_change | day
A | 1 | 1
A | 2 | 2
B | 2 | 2
A | -3 | 3
B | 4 | 3
Я уверен, что могу использовать цикл, чтобы пройти через каждый ряд, чтобы достичь его.Мне интересно, есть ли более эффективный способ завершить его без цикла?Я думаю, что использую groupby
, но все еще не удается найти выход без использования цикла, особенно учитывая, что список доступных продуктов может отличаться каждый день (т. Е. День1: A, день2 A, B; день3: B) Любая идея или предложения?