Запишите, если условие никогда не встречается - PullRequest
0 голосов
/ 12 февраля 2020

Я перебираю два фрейма данных (один для заказов и один для текущей суммы), чтобы эффективно обновлять сумму при выходе суммы. У меня есть l oop ниже:

##iterates through orders
for i in range(len(Inps)):
  ##Iterates through current pallet amounts
  for j in range(len(PallSums)):
    ##selects match on item, and if qty required is <= qty existing
    if Inps.loc[i, "Item"] == PallSums.loc[j, "Item"] and Inps.loc[i, "Qty"] <= PallSums.loc[j, "Qty"]:
      #Removes required quantity from existing quantity
      PallSums.loc[j, "Qty"] = PallSums.loc[j, "Qty"] - Inps.loc[i, "Qty"]
      #Breaks so it only removes the quantity once
      break
    else:
      #continues to loop through
      continue

Это отлично работает, но если Inps.loc[i, "Qty"]<= PallSums.loc[j, "Qty"] не встречается ни в какой момент, я не собираюсь это захватывать.

Как лучше всего это сделать?

1 Ответ

1 голос
/ 12 февраля 2020

Здесь вы можете использовать относительно необычное for...else (где else срабатывает, если l oop завершается естественным путем, но не на разрыве):

In [1]: for i in range(10):
   ...:     if i == 11:
   ...:         print("found 11")
   ...:         break
   ...: else:
   ...:     print("didn't find 11")
   ...:
didn't find 11

-

In [2]: for i in range(20):
   ...:     if i == 11:
   ...:         print("found 11")
   ...:         break
   ...: else:
   ...:     print("didn't find 11")
   ...:
found 11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...