In [10]: df
Out[10]:
PART AVAILABLE_INVENTORY DEMAND
1 A 12 6
2 A 12 2
3 A 12 1
4 B 24 1
5 B 24 1
6 B 24 4
7 B 24 3
Требуемый вывод:
PART AVAILABLE_INVENTORY DEMAND AI AI_AFTER
1 A 12 6 12 6
2 A 12 2 6 4
3 A 12 1 4 3
4 B 24 1 24 23
5 B 24 1 23 22
6 B 24 4 22 18
7 B 24 3 18 15
Код, который у меня есть, приведен ниже, но он не дает вывод, который я ищу:
def retain(df):
df['PREV_PART'] = df['PART'].shift()
df['PREV_AI_AFTER'] = df['AI'].shift() - df['DEMAND'].shift()
df['AI'] = np.where(df['PART'] != df['PREV_PART'], df['AI'], df['PREV_AI_AFTER'])
df['AI_AFTER'] = df['AI'] - df['DEMAND']
df['AI'] = df['AVAILABLE_INVENTORY']
retain(df)
Что такое самый быстрый способ сделать это с учетом производительности?