def convert(time):
year = time[:4]
semester = time[4:]
conversions = {'S1': '-01-31' , 'S2': '-06-03', 'S3': '-09-30'}
return pd.to_datetime(year + conversions[semester])
df['time'] = df.time.apply(convert)
возвращает:
time
0 2019-06-03
1 2019-06-03
2 2020-01-31
Я думаю, что в вашем ожидаемом результате были некоторые несоответствия, но вам просто нужно поместить любые семестры / даты, которые вы хотите, в словарь conversions
.