Сначала нарежьте ненужные данные, а затем используйте split
(Предполагая, что длина данных Ph постоянна):
df[['Contact1','Contact2']] = df.Contact.str[:-8].str.split('[-]',expand=True)
Если данные после Ph не постоянны, используйте extract
для алфавитов и пробелов:
df[['Contact1','Contact2']] = df.Contact.str.split('[-]',expand=True)
df['Contact2'] = df.Contact2.str.extract('([a-zA-Z ]+)')[0].str.rstrip()
df = pd.DataFrame({'Name':['John','David'],
'Occupation':['CEO','Dep Dir'],
'Contact':['HP No-Mobile Ph 123:456','Off-Mobile Ph']},)
print(df)
Name Occupation Contact
0 John CEO HP No-Mobile Ph 123:456
1 David Dep Dir Off-Mobile Ph
df[['Contact1','Contact2']] = df.Contact.str.split('[-]',expand=True)
print(df)
Name Occupation Contact Contact1 Contact2
0 John CEO HP No-Mobile Ph 123:456 HP No Mobile Ph 123:456
1 David Dep Dir Off-Mobile Ph Off Mobile Ph
df['Contact2'] = df.Contact2.str.extract('([a-zA-Z ]+)')[0].str.rstrip()
print(df)
Name Occupation Contact Contact1 Contact2
0 John CEO HP No-Mobile Ph 123:456 HP No Mobile Ph
1 David Dep Dir Off-Mobile Ph Off Mobile Ph