#python #count
Вопрос:
Я хочу подсчитывать количество клиентов в системе за каждый час в зависимости от даты их прибытия и отъезда. Я могу подсчитать количество клиентов, используя for
циклы. Как я могу закодировать проблему без использования for
циклов?
вот мой код с for
циклами:
for i in range(0,len(time_range),1): for j in range(0,len(test),1): if (time_range.loc[i,'Time']gt;= test.loc[j,"Arrival"]) and (time_range.loc[i,'Time']lt;test.loc[j,"Departure"]): time_range.loc[i,"Census"]=time_range.loc[i,"Census"] 1
Входные:
Время прибытия и отъезда для 3 клиентов:
Выход:
Спасибо,
Комментарии:
1. Пожалуйста, дайте нам ваш фактический код, а не изображение вашего кода. Из-за этого тебе действительно трудно помочь.
2. Я отредактировал свой пост и добавил фактический код. Спасибо
Ответ №1:
Вы можете немного упростить:
for i in range(len(test)): time_range.loc[i, "Census"] = sum( test.loc[j, "Arrival"] lt;= time_range.loc[i, "Time"] lt; test.loc[j, "Departure"] for j in range(len(test)))
Вы можете изменить значение =
на, только =
если знаете "Census"
, что поле изначально равно 0.
Этот код использует тот факт, что True
ведет себя как 1 и False
ведет себя как 0 в арифметике.
Я не знаю никакого способа избавиться от внешней петли.