Вы можете сделать что-то вроде этого:
import pandas as pd
data = ['ASC100.1',
'MJT122',
'ASC120.4',
'XTY111']
df = pd.DataFrame(data=data, columns=['col'])
result = df.col.str.extract('([a-zA-Z]+)([^a-zA-Z]+)', expand=True)
result.columns = ['Text', 'Number']
print(result)
Вывод
Text Number
0 ASC 100.1
1 MJT 122
2 ASC 120.4
3 XTY 111
Шаблон ([a-zA-Z]+)([^a-zA-Z]+)
означает совпадение группы букв: ([a-zA-Z]+)
затем следует группа не букв: ([^a-zA-Z]+)
.Более безопасной альтернативой будет использование следующего регулярного выражения: ([a-zA-Z]+)(\d+\.?\d+)
при условии, что числа могут иметь не более одной точки.
Далее
- Документация по regex в Python.
- Документация по extract .