fields_financials_new = ["TR.CommonName", "TR.OrganizationID", "TR.SucceededBy", "TR.RegistrationCountry", 'TR.RegCountryCode', "TR.HeadquartersCountry", "TR.HQCountryCode","TR.F.StatementDate","TR.F.TotRevenue","TR.F.GrossTotRevBizActiv","TR.F.TotAssets","TR.F.TotCurrAssets","TR.F.IntangAssets","TR.F.EmpAvg","TR.F.LaborRelExpnTot","TR.F.EBIT","TR.F.EBITDAMargPct","TR.F.TotAssets.currency", 'TR.Revenue.date'] df= pd.read_csv(r'aaa.csv', low_memory=False) list_date0_str = [f"{2000 + i}-01-01" for i in range(1)] # get all the permIDs to make the requests list_PermIDs_request = [str(int(x)) for x in list(df['permid'].dropna().unique())] lenstr = len(list_date0_str) for k in range(len(list_date0_str)): ##(0, lenstr, batch_size): date0 = list_date0_str[0] # initialise parameters dateT = 0 parameter_dict = parameters={'SDate': dateT, 'EDate': date0, 'Frq': 'Y', 'Curn':'USD'} # requests, finally! data_PermID, error_PermID = ek.get_data(instruments=list_PermIDs_request, fields=fields_financials_new, parameters=parameter_dict) print(f'PermID requests done!{k}', end='') time.sleep(sleep_duration) ## now, get the error data and request again data_PermID['v1'] = data_PermID.reset_index().index dfaa = pd.DataFrame(error_PermID, columns=['code', 'col', 'message', 'row']) a = dfaa['row'].unique() columns=['row'] a = pd.DataFrame(a, columns=columns) a = pd.merge(a, data_PermID, right_on=['v1'], left_on=['row'], how='left') list_perm2 = [str(x) for x in list(a['PermID'].dropna().unique())] # print(list_perm2) for k in range(len(list_date0_str)): ##(0, lenstr, batch_size): date0 = list_date0_str[0] # initialise parameters dateT = 0 parameter_dict = parameters={'SDate': dateT, 'EDate': date0, 'Frq': 'Y', 'Curn':'USD'} # requests, finally! data_PermID2, error_PermID2 = ek.get_data(instruments=list_perm2, fields=fields_financials_new, parameters=parameter_dict) print(f'PermID requests done!{k}', end='')