Python панды, разделяющие текст и числа в кадре данных - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть фрейм данных df1 с именем столбца Acc Number в качестве первого столбца, и данные выглядят следующим образом:

Acc Number
ASC100.1
MJT122
ASC120.4
XTY111

Мне нужно создать новый фрейм данных df2, в котором сначала будет два столбца с текстовой частью.а вторая имеет числа, поэтому желаемый результат:

Text    Number 
ASC     100.1
MJT     122
ASC     100.4
XTY     111

Как бы я поступил так?

Спасибо!

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете сделать что-то вроде этого:

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+) при условии, что числа могут иметь не более одной точки.

Далее

  1. Документация по regex в Python.
  2. Документация по extract .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...