Я пытаюсь создать набор данных со следующими записями:
Flight_ID, Iternary_ID, Flight_Date, Booking_Date
У меня есть код здесь:
import random
import pandas as pd
import numpy as np
from faker import Faker
import datetime
#import datetime
fake = Faker()
#import itertools
#from math import floor
random.seed(999)
## Create random iternary
no_of_days = 30
no_of_flights_per_day = 5
total_obs = no_of_days*no_of_flights_per_day
itr_a= np.random.randint(1,3,size = int(0.7*total_obs))
itr_b=np.random.randint(3,6,size=total_obs - len(itr_a))
itr = [1,2,3,4,5]*no_of_days
#itr = itr_a.tolist() + itr_b.tolist()
#for x in range(10):
#random.shuffle(itr)
## Generate flight ids
flight_ids = np.random.randint(10000,99999,size= total_obs).tolist()
flight_ids = ["FT-" + str(x) for x in flight_ids ]
## Generating date for flights
base = datetime.date(2019, 9, 1)
date_list = [base + datetime.timedelta(days=x) for x in range(30)]
date_list = date_list*5
#random.shuffle(date_list)
##### Creating booking dataset
v = pd.DataFrame( list(zip(itr,flight_ids,date_list)),columns =['Flight_Id', 'Iternary_Code', 'date_list'])
flight_id_superlist = []
flight_final_date_superlist= []
flight_booking_date_superlist = []
flight_iternary_code_superlist=[]
for i in range(len(v['Flight_Id'])):
no_days_booked = random.randint(4,30)
flight_date = v['date_list'][i]
booking_start_date = flight_date- datetime.timedelta(days=30)
book_dates = [fake.date_between(start_date=booking_start_date, end_date=flight_date) for v in range(no_days_booked)]
#book_dates.sort()
flight_id_superlist = flight_id_superlist + ([v['Iternary_Code'][i]]*no_days_booked)
flight_iternary_code_superlist = flight_iternary_code_superlist + ([v['Flight_Id'][i]]*no_days_booked)
flight_final_date_superlist = flight_final_date_superlist + ([flight_date]*no_days_booked)
flight_booking_date_superlist = flight_booking_date_superlist + book_dates
Flight_df = pd.DataFrame(list(zip(flight_id_superlist,flight_iternary_code_superlist,
flight_final_date_superlist,flight_booking_date_superlist
)),
columns =['Flight_Id', 'Iternary_Code','Flight_Date','Booking_Date'
])
Flight_df.to_csv('./Flight_data.csv',index=False)
theОжидаемый результат - получить записи (Flight_ID, Iternary_ID, Flight_Date) для дат бронирования.
Проблема, с которой я сталкиваюсь, заключается в том, что для конкретного flight_Date и Itenary_ID назначается несколько Flight_ID (скриншот прилагается). В dataframe v хранятся уникальные значения (Flight_ID, Iternary_ID, Flight_Date), и они должны оставаться неизменными, хотя booking_date может измениться. Я не могу понять причину. Может ли кто-нибудь помочь с тем же.