Разделить столбец только по старшим номерам - PullRequest
0 голосов
/ 19 февраля 2019

Мне удалось выяснить, как разбить столбец с помощью цифр и букв, и нашел решения для разбиения цифр и букв.Но у меня есть проблема потери всех чисел, следующих за старшими числами / цифрами, и я не могу найти решение (а также все еще учусь использовать регулярные выражения).

Быстрый пример:

import pandas as pd
import numpy as np

data = np.array([['Col1','Col2'],
                ['1','05MW'],
                ['2','16MW'],
                ['3','05SW1'],
                ['4','05SW2']])

df = pd.DataFrame(data=data[1:,:],
                  index=data[1:,0],
                  columns=data[0,:])

df[['Col2', 'id']] = df['Col2'].str.extract('(\d+)([A-Za-z]*)', expand=True)

Дает:

print (df)
  Col1 Col2  id
1    1   05  MW
2    2   16  MW
3    3   05  SW
4    4   05  SW

Однако я не хочу ничего терять, включая цифры, которые следуют за старшими номерами.Я пытаюсь добиться этого вывода:

print (df)
  Col1 Col2  id
1    1   05  MW
2    2   16  MW
3    3   05  SW1
4    4   05  SW2

1 Ответ

0 голосов
/ 19 февраля 2019

Добавить 0-9 для разбора и числа:

df[['Col2', 'id']] = df['Col2'].str.extract('(\d+)([A-Za-z0-9]*)', expand=True)

Или использовать .* для разбора всех значений:

df[['Col2', 'id']] = df['Col2'].str.extract('(\d+)(.*)', expand=True)

print (df)
  Col1 Col2   id
1    1   05   MW
2    2   16   MW
3    3   05  SW1
4    4   05  SW2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...