Вы можете использовать Series.str.extract :
df['Year'] = df['Member Since'].str.extract('(\d+)(?:yrs)')
df['Mon'] = df['Member Since'].str.extract('(?:\s)(\d+)(?:mon)')
?:
- это запись группы без записи. Это означает, что оно соответствует регулярному выражению, но не фиксируется в выводе
Вы также можете попробовать Series.str.extractall :
df[['year','mon']]= df['Member Since'].str.extractall('(\d+)').unstack()
df
Member Since year mon
0 0yrs 11mon 0 11
1 15yrs 4mon 15 4
Функция extractall на самом деле возвращает DataFrame с одной строкой для каждого совпадения и одним столбцом для каждой группы, поэтому вам необходимо снять ее.
Используйте метод извлечения всех, только если у вас есть числа, как показано в вашем вопросе. Больше или меньше двух вернет ошибку.