def data_fixing(dat, flags):
dat['created_at'] = pd.to_datetime(dat['created_at'], dayfirst=True)
dat.sort_values(['car_license_number','created_at','odometer_reading'], axis=0,ascending=True, inplace=True)
dat.replace([np.inf, -np.inf], np.nan,inplace=True)
dat.fillna(0, inplace=True)
from progressbar import ProgressBar
pbar = ProgressBar()
dat.sort_values(['car_license_number','created_at','odometer_reading'], axis=0,ascending=True, inplace=True)
groups = dat.groupby(['car_license_number'])
final = pd.DataFrame()
for lice,car in pbar(groups):
p=pd.DataFrame(car)
p.reset_index(drop=True, inplace=True)
for flag in flags:
odo_flag_last=0
day_diff_repair=0
day_diff=car['created_at'][0]
flag_odo=0
b=[]
c=[]
for i in range(len(p)):
day_diff_repair=(p.loc[i,'created_at']-day_diff).days
odo_flag_last=p.loc[i,'odometer_reading']-flag_odo
if(p.loc[i,str(flag)]==1):
flag_odo=p.loc[i,'odometer_reading']
day_diff=p.loc[i,'created_at']
b.append(int(odo_flag_last))
c.append(int(day_diff_repair))
p['kms_frm_'+str(flag)]=b
p['day_diff_'+str(flag)]=c
final = pd.concat([final,p],axis =0)
return final