Из от текущей недели до 52 недель в будущем. Я хотел бы начать с текущей недели с текущих значений в наличии, затем для каждой комбинации организации и позиции добавить количество заказа на работу к количеству в наличии на неделю до даты его завершения. . Я также хотел бы удалить количество в наличии на следующей неделе после истечения срока его действия (если неделя истечения срока действия равна 46, количество будет удалено, начиная с 47 недели).
Ниже показано, что я сделал. работаю вместе с некоторыми образцами данных, но я почти уверен, что делаю это совершенно неправильно (новичок в фреймворке данных). Любая помощь будет очень признательна.
Код: Выделить всё
Onhand Inventory (as of today)
org_id,item_id,expiration_week,qty
300000158934064,100000550480114,51,100
300000158934088,100000550480114,44,200
300000158934088,100000550476976,41,300
300000158934088,100000550476784,47,400
300000158934076,100000550476784,49,500
300000158934076,100000550476703,48,600
Planned Workorders
org_id,item_id,completion_week,qty
300000158934064,100000550480114,45,50
300000158934088,100000550480114,49,100
300000158934088,100000550476784,43,150
300000158934076,100000550476784,49,200
300000158934076,100000550476703,50,250
Код: Выделить всё
# Merge the dataframes on org_id and inventory_item_id
df = pd.merge(onhand, work_orders, on=['org_id', 'inventory_item_id'], how='outer')
# Fill NaN values with 0 (if any)
df = df.fillna(0)
# Calculate the cumulative sum of quantity in df2
df['cumulative_qty'] = df.groupby(['org_id', 'inventory_item_id'])['qty_y'].cumsum()
# Update the qty in df2 using the cumulative summary
df['updated_qty'] = df['qty_x'] + df['cumulative_qty']
# Sort values by weeknumber
df = df.sort_values(['org_id', 'inventory_item_id', 'weeknumber'])
# Reset index
df = df.reset_index(drop=True)
# Pivot the dataframe
pivot_df = df.pivot_table(index=['org_id', 'inventory_item_id'],
columns='weeknumber',
values='updated_qty',
fill_value=0)
# Calculate the cumulative sum across the weeks
pivot_df = pivot_df.cumsum(axis=1)
# Reset index
pivot_df = pivot_df.reset_index()

Подробнее здесь: https://stackoverflow.com/questions/790 ... sed-on-com