Совокупная сумма по неделям в кадре данных с добавлением и вычитанием в зависимости от даты завершения или истечения сроPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Совокупная сумма по неделям в кадре данных с добавлением и вычитанием в зависимости от даты завершения или истечения сро

Сообщение Anonymous »

Я пытаюсь получить базовые данные о поставках, показывающие, что доступно по товарам и организациям для каждой недели, начиная с текущей недели. У меня есть один фрейм данных для количества в наличии, который представляет то, что доступно на этой неделе, и другой фрейм данных с заказами на работу, который включает в себя организацию, товар, неделю завершения и количество.
Моя цель — проект от текущей недели до 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»