Как подсчитать количество клиентов в системе в разных временных метках без использования «для циклов» в Python

#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 в арифметике.

Я не знаю никакого способа избавиться от внешней петли.