Вы можете использовать троичный, чтобы увеличить год на единицу, если это Q4: int(yr) + (1 if qtr == 'Q4' else 0)
import datetime as dt
# Sample data.
df = pd.DataFrame({
'Date': ['2013 Q2', '2013 Q3', '2013 Q4', '2014 Q4', '2015 Q1', '2015 Q2', '2015 Q3', '2016 Q4', '2019 Q4'],
'Filing Date': ['8/17/2013', '11/19/2013', '2/2/2014', '2/13/2015', '5/12/2015', '8/7/2015', '11/20/2015', '2/19/2017', '2/4/2020'],
'Name': ['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF', 'GGG', 'HHH', 'III']
})
# Solution.
quarter_to_month_mapping = {'Q1': 5, 'Q2': 8, 'Q3': 11, 'Q4': 2}
year, quarter = zip(*df['Date'].str.split(' ', 1))
df['Filing Date'] = pd.to_datetime([
dt.date(
year=int(yr) + (1 if qtr == 'Q4' else 0),
month=quarter_to_month_mapping[qtr],
day=15
)
for yr, qtr in zip(year, quarter)]
)
>>> df
Date Filing Date Name
0 2013 Q2 2013-08-15 AAA
1 2013 Q3 2013-11-15 BBB
2 2013 Q4 2014-02-15 CCC
3 2014 Q4 2015-02-15 DDD
4 2015 Q1 2015-05-15 EEE
5 2015 Q2 2015-08-15 FFF
6 2015 Q3 2015-11-15 GGG
7 2016 Q4 2017-02-15 HHH
8 2019 Q4 2020-02-15 III