Возможно ли векторизовать функцию в pandas для моей задачи
У меня имеется таблица fiz_ostatki, где описывается город, номер продукта и остатки на складе.
| area | number_product | balances |
|---|---|---|
| Волгоград | 196 | 20 |
| Волгоград | 197 | 27 |
| Пермь | 17 | 15 |
и таких строк 1500 Также таблица с заказами (orders), где также есть город, номер продукты и сколько требуется
| area | number_product | required |
|---|---|---|
| Волгоград | 196 | 15 |
| Волгоград | 196 | 2 |
| Волгоград | 197 | 43 |
| Пермь | 17 | 8 |
таких строк 10000
В своем коде я использую метод apply, где я уже изменяю таблицу fiz_ostatki по условию:
def raschet_fiz_ostatki(number_product, area, required):
#проверяю требуется ли
if required!=0:
#если нет в списке fiz_ostatki, то возвращаем None
if fiz_ostatki[(fiz_ostatki['number_product']==number_product) & (fiz_ostatki['area']==area)].empty:
return
#если требуется больше чем есть в остатках, то баланс обнуляем
if required > fiz_ostatki.loc[(fiz_ostatki['number_product'] == number_product) & (fiz_ostatki['area']==area), 'balances'].iloc[0]:
fiz_ostatki.loc[(fiz_ostatki['number_product'] == number_product) & (fiz_ostatki['area']==area), 'balances'] = 0
return
#иначе, отнимаем сколько требуется
else:
fiz_ostatki.loc[(fiz_ostatki['number_product']==number_product) & (fiz_ostatki['area']==area), 'balances'] -= required
return
orders.apply(lambda x: raschet_fiz_ostatki(x['number_product'], x['area'], x['required']), axis=1)