Я пытаюсь смоделировать формулу Excel за последние несколько часов, но не могу этого сделать.Буду признателен за любую помощь
Версия формулы Excel -
IF(N2<>N1,O2-L2,Q1-L2)
Explanation - IF (N2 != N1) THEN O2-L2 ELSE Q1-L2
Columns Abbreviations -
N = key_2
O = available_inventory
L = total_demand
Q = net_inventory
Я сделал некоторые начальные шаги в Python, но не смог воспроизвести ту же формулу.Ниже моя версия -
1. df_ao_pvt['key_2_shift'] = df_ao_pvt['key_2'].shift(-1,axis = 0)
2. df_ao_pvt['available_inventory'] = df_ao_pvt['available_inventory'].replace(np.nan, 0)
3. df_ao_pvt['net_inventory'] = df_ao_pvt.apply(lambda row: row.available_inventory - row.total_demand if row.key_2 != row.key_2_shift else row.net_inventory - row.total_demand, axis = 1)
Дополнительная информация - DTYPE соответствующих столбцов написаны ниже -
1. total_demand - int64
2. key_2 - Object
3. available_inventory - float64
Нам нужно создать формулу в новом столбце с именем net_inventory (как написанов Python-версии кода).Заполненный столбец - это net_inventory (как написано в коде Python)
Ниже приведен пример формата данных, в котором я хочу повторить формулу (Примечание. В реальных данных строки превышают 1 миллион) -
total_demand|key_2|available_inventory|key_2_shift|net_inventory
120000|20611011205|120520611012019-06-19|240000|120520611012019-06-20|120000
120000|20611011205|120520611012019-06-20|120000|120520611012019-06-26|0
120000|20611011205|120520611012019-06-26|120000|120520611012019-06-27|0
120000|20611011205|120520611012019-06-27|0|280120611012019-06-20|-120000
180000|20611012801|280120611012019-06-20|0|310420611012019-06-06|-180000