Imn trying to write a function that will handle dates in a given format however, i'm having a few issues.
The first issue is when im applying this function using
df['AppointmentDate'] = df['AppointmentDate'].apply(func=date_handler)
The function works as intended while passing my own list, but it doesnt work when applying to DATAFRAME?
if __name__ == "__main__":
date_handler(
date_list=[
'2022-07-18', '2022-07-02', '2022-07-25', # YYYY-MM-DD
'19-07-2022', '03-07-2022', '26-07-2022', # DD-MM-YYYY
'12-20-2023', '09-08-2022', '05-06-2023', # MM-DD-YYYY
'2022/08/17', '2023/10/20', '2023/01/01', # YYYY/MM/DD
'18/08/2022', '22/10/2023', '01/01/2023', # DD/MM/YYYY
'02/02/2023', '10/23/2023', '12/02/2023', # MM/DD/YYYY
'20230920', '20230822', '20230909', # YYYYMMDD
'20230920', '20230822', '20230909', # DDMMYYYY
'20230920', '20230822', '20230909', # MMDDYYYY
my dataframe returns with empty values!
The second issue is when i am trying to add more try and excepts (to handle date time (YYYYMMDDHHMMSS+ TIMEZONE) i get the error: SyntaxError: too many statically nested blocks.
Here is my function.
@typechecked
def date_handler(date_list: any) -> print:
for date in date_list:
try:
date_obj = datetime.datetime.strptime(date, '%Y-%m-%d')
except ValueError:
try:
date_obj = datetime.datetime.strptime(date, '%d-%m-%Y')
except ValueError:
try:
date_obj = datetime.datetime.strptime(date, '%m-%d-%Y')
except ValueError:
try:
date_obj = datetime.datetime.strptime(date, '%Y/%m/%d')
except ValueError:
try:
date_obj = datetime.datetime.strptime(date, '%d/%m/%Y')
except ValueError:
try:
date_obj = datetime.datetime.strptime(date, '%m/%d/%Y')
except ValueError:
try:
date_obj = datetime.datetime.strptime(date, '%Y%m%d')
except ValueError:
try:
date_obj = datetime.datetime.strptime(date, '%d%m%Y')
except ValueError:
try:
date_obj = datetime.datetime.strptime(date, '%m%d%Y')
except ValueError:
print(f"Invalid date format: {date}")
continue
else:
return None
else:
return date_obj.strftime('%Y-%m-%d')
Any reasons why this is?