Jul-29-2019, 07:04 PM
The code only validating one car model, one compatibility model and all the booking schedule. I don’t know how to write the code to validate all car compatibility and schedule.
The goal is to reuse the car model and optimize the booking request by date, time and all car compatibility. Each day has several sessions. We currently have 8 car models; one car model is considered compatible with every single booking or needs. And to ensure that the rental runs smoothly, each session requires a car model assign.
I need to check availability of the car model by date
Check the all compatibility by each model.
Model Code= Car Brand
Model Session= Identify each individual future booking
Event Date= Future Booking Session
Start Time= Future Booking Start Time
End Time= Future Booking End Time
Car Type- Model type
Compatibility with model type and schedule
Letter A, B, C, D, E, F, G = 1 means its compatible with the booking
= 0 means isn’t compatible with the booking
The goal is to reuse the car model and optimize the booking request by date, time and all car compatibility. Each day has several sessions. We currently have 8 car models; one car model is considered compatible with every single booking or needs. And to ensure that the rental runs smoothly, each session requires a car model assign.
I need to check availability of the car model by date
Check the all compatibility by each model.
Model Code= Car Brand
Model Session= Identify each individual future booking
Event Date= Future Booking Session
Start Time= Future Booking Start Time
End Time= Future Booking End Time
Car Type- Model type
Compatibility with model type and schedule
Letter A, B, C, D, E, F, G = 1 means its compatible with the booking
= 0 means isn’t compatible with the booking
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
import pandas as pd # In[2]: df = pd.read_csv(r 'C:\Users\XXXXXX\Documents\Car_Rental.csv' ) # In[3]: listA = [ 'ACU' , 'BMW' , 'GM' , 'FIA' , 'JEE' , 'FIA' , 'HON' , 'HYU' , 'JEE' , 'KTE' ] listC = [ 'ACU' , 'BMW' , 'FIA' , 'JEE' , 'FIA' , 'HON' , 'HYU' , 'JEE' , 'KTE' ] listD = [ 'ACU' , 'BMW' , 'FIA' , 'JEE' , 'FIA' , 'HON' , 'HYU' , 'JEE' ] listE = [ 'ACU' , 'BMW' , 'FIA' ] listF = [ 'ACU' , 'BMW' , 'FIA' , 'JEE' ] listG = [ 'ACU' , 'BMW' , 'GM' , 'FIA' , 'JEE' ] df[ 'A' ] = df[ 'Model Code' ]. apply ( lambda x: 1 if x in listA else 0 ) df[ 'B' ] = df[ 'Model Code' ]. apply ( lambda x: 1 if x in listA else 0 ) df[ 'C' ] = df[ 'Model Code' ]. apply ( lambda x: 1 if x in listC else 0 ) df[ 'D' ] = df[ 'Model Code' ]. apply ( lambda x: 1 if x in listD else 0 ) df[ 'E' ] = df[ 'Model Code' ]. apply ( lambda x: 1 if x in listE else 0 ) df[ 'F' ] = df[ 'Model Code' ]. apply ( lambda x: 1 if x in listF else 0 ) df[ 'G' ] = df[ 'Model Code' ]. apply ( lambda x: 1 if x in listG else 0 ) df # In[4]: def conflicts_eventdates_Modelcodes(x,y): du = df du[ 'Start DateTime' ] = pd.to_datetime(du[ 'Start DateTime' ]) du[ 'End Date/Time' ] = pd.to_datetime(du[ 'End Date/Time' ]) du[ 'Event Date' ] = pd.to_datetime(du[ 'Event Date' ]) x = pd.to_datetime(x) start_times = [] end_times = [] Sessions = [] count = 0 dux = du[du[y] = = 1 ] #print(dua) Sports = [] dux = dux[dux[ 'Event Date' ] = = x] for i,j,k in zip (dux[ 'Start DateTime' ],dux[ 'End Date/Time' ],dux[ 'Model Session' ]): count = count + 1 ; start_times.append(i) end_times.append(j) Sessions.append(k) events = list ( zip (start_times,end_times)) times = [] for event in events: startTime, endTime = event times.append((startTime, 'start' )) times.append((endTime, 'end' )) #print(events) times = sorted (times) count = 0 maxCount = 0 for time in times: if time[ 1 ] = = 'start' : count + = 1 else : count - = 1 maxCount = max (count, maxCount) return maxCount # In[5]: conflicts_eventdates_Modelcodes( '2020-07-23' , 'A' ) # In[6]: df[df[ 'A' ] = = 1 ][ 'Model Code' ].unique() # In[7]: def conflicts_eventdates_Modelcodes1(x): du = df du[ 'Start DateTime' ] = pd.to_datetime(du[ 'Start DateTime' ]) du[ 'End Date/Time' ] = pd.to_datetime(du[ 'End Date/Time' ]) du[ 'Event Date' ] = pd.to_datetime(du[ 'Event Date' ]) #x=pd.to_datetime(x) start_times = [] end_times = [] Sessions = [] count = 0 #dux = du[du[y] ==1] #print(dua) Sports = [] dux = du dux = dux[dux[ 'Model Code' ] = = x] for i,j,k in zip (dux[ 'Start DateTime' ],dux[ 'End Date/Time' ],dux[ 'Model Session' ]): count = count + 1 ; start_times.append(i) end_times.append(j) Sessions.append(k) events = list ( zip (start_times,end_times)) times = [] for event in events: startTime, endTime = event times.append((startTime, 'start' )) times.append((endTime, 'end' )) #print(events) times = sorted (times) count = 0 maxCount = 0 for time in times: if time[ 1 ] = = 'start' : count + = 1 else : count - = 1 maxCount = max (count, maxCount) return maxCount # In[8]: conflicts_eventdates_Modelcodes1( 'BMW' ) |