Re: Объединение нескольких регулярных выражений в Pandas Dataframe - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть набор данных, который выглядит следующим образом:

0         03/25/93 Total time of visit (in minutes):\n
1                       6/18/85 Primary Care Doctor:\n
2    sshe plans to move as of 7/8/71 In-Home Servic...

и содержит даты в различных форматах, таких как:

04/20/2009; 04/20/09; 4/20/09; 4/3/09
Mar-20-2009; Mar 20, 2009; March 20, 2009; Mar. 20, 2009; Mar 20 2009;
20 Mar 2009; 20 March 2009; 20 Mar. 2009; 20 March, 2009
Mar 20th, 2009; Mar 21st, 2009; Mar 22nd, 2009

Мне нужно извлечь даты и отсортировать их вв порядке возрастания, соблюдая следующие правила:

  • Предположим даты в ММ / ДД / ГГ
  • Предположим даты с годом, закодированным в две цифры

IЯ должен вернуть Серии Панд с правильной датой в хронологическом порядке:

Например, если серия была такой:

0    1999
1    2010
2    1978

Мне нужно вернуть следующие серии:

0    2
1    4
2    0

, где первый столбец - это индекс, а второй - количество (лет) в наборе данных.Например, если 1999 год появился дважды, он вернет два (2) во втором столбце.

Мне удалось извлечь и сопоставить шаблоны дат, однако я не могу объединить их в одно выражение длясопоставить весь фрейм данных:

re1 = df.str.extract(r'((?:\d{,2}\s)?(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*(?:-|\.|\s|,)\s?\d{,2}[a-z]*(?:-|,|\s)?\s?\d{2,4})')
re2 = df.str.extract(r'((?:\d{1,2})(?:(?:\/|-)\d{1,2})(?:(?:\/|-)\d{2,4}))')
re3 = df.str.extract(r'((?:\d{1,2}(?:-|\/))?\d{4})')

Как можно объединить приведенные выше регулярные выражения в одно выражение и вернуть его как Series?

1 Ответ

0 голосов
/ 02 декабря 2018

Вы можете использовать

((?:\d{0,2}\s)?(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*[-.\s,]\s?\d{0,2}[a-z]*[-,\s]?\s?\d{2,4}|\d{1,2}[/-]\d{1,2}[/-]\d{2,4}|(?:\d{1,2}[-/])?\d{4})

См. Демонстрационную версию regex

. Цель состоит в том, чтобы объединить детали с помощью оператора |, сохраняя все внутренние группы безотлов.Внешняя группа должна быть захвачена, чтобы extract мог вывести совпадение.

...