def get_data((sex, age, sline)): result = [] for row in all_data: admit_date = row[2] agef = fp.split_age(int(row[9])) sexf = int(row[10]) slinef = row[14] soif = row[8] rlos = row[5] if slinef is None: continue if len(admit_date) == 0: continue if len(rlos) == 0: continue if len(soif) == 0: continue if (sex, age, sline) != (sexf, agef, slinef): continue if int(soif) > 2: continue datetime = fp.parse_datetime(admit_date) result.append(int(rlos)) return result
agef = fp.split_age(agef_in_years) sexf = int(row[10]) slinef = row[14] rlos = row[5] if slinef is None: continue if len(admit_date) == 0: continue if len(rlos) == 0: continue if (sex, age, sline) != (sexf, agef, slinef): continue datetime = fp.parse_datetime(admit_date) start_date = datetime if start_date is None or datetime < start_date else start_date end_date = datetime if end_date is None or datetime > end_date else end_date hist_data.setdefault(datetime, []) hist_data[datetime].append((admit_date, sex, agef_in_years, sline, int(rlos))) start_day = random.randint(0, (end_date - start_date).days) end_day = start_day + days result = [] for day in range(start_day, end_day + 1): day_dt = start_date + timedelta(day) if day_dt in hist_data: result.extend(hist_data[day_dt]) return result, start_date + timedelta(start_day), start_date + timedelta(end_day)