Найти и заменить получастые строки в кадре данных? - PullRequest
1 голос
/ 08 апреля 2019

Я пытаюсь найти встречающуюся строку и удалить все остальные данные в столбце. Панды и Ре были импортированы. Например, у меня есть датафрейм ...

>>>df
COLUMN COUNT   DATA
           1   this row RA-123: data 8b43a
           2   here RA-5372: data 94h63c

Мне нужно сохранить только RA-число, которое следует, и удалить все до и после. Числа, которые следуют, не всегда имеют одинаковую длину, и строка 'RA-' не всегда находится в одной и той же позиции. После каждого экземпляра есть двоеточие, которое можно использовать в качестве разделителя.

Я попробовал это (друг написал для меня часть поиска по регулярному выражению, потому что я не знаком с ней).

df.assign(DATA= df['DATA'].str.extract(re.search('RA[^:]+')))

Но питон вернулся

TypeError: search() missing 1 required positional argument: 'string'

Что мне здесь не хватает? Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 08 апреля 2019

Вы должны использовать группу захвата с экстрактом:

df['DATA'].str.extract(r'(RA-\d+)')

Здесь (RA-\d+) - это группа захвата, соответствующая RA, затем дефис и одна или несколько цифр.

Вы можете использовать свой собственный шаблон, но вам по-прежнему нужно заключить его в скобки, r'(RA[^:]+)'.

1 голос
/ 08 апреля 2019

Глядя на документы , вам не нужен метод re.search.Вы просто звоните df[DATA] = df['DATA'].str.extract(r'RA[^:]+'))

0 голосов
/ 08 апреля 2019

Как я упоминал ранее, re здесь не требуется.

Другие ответы, адресованные как использовать extract напрямую. Тем не менее, чтобы ответить на ваш вопрос, если вы действительно хотите использовать re, лучше всего использовать re.compile вместо re.search.

df.assign(DATA= df['DATA'].str.extract(re.compile(regex_str)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...