Регулярное выражение для разделения строки фрейма данных на столбцы в python

#regex #python-3.x #pandas

#регулярное выражение #python-3.x #pandas

Вопрос:

Я новичок в регулярных выражениях. Я должен разделить строку фрейма данных на 3 столбца на основе шаблона с использованием регулярного выражения.

Пример строки в фрейме данных:

 "Sample String(just a / string) 04/04/2014 to ongoing"
 

Я пытаюсь использовать регулярное выражение ниже, но не работает:

 pat = re.compile("(?P<String_Name>[a-zA-Z- )(/ ]*)(?P<START_DATE>d{1,2}/d{1,2}/d{2,4})(?P<stop_date>[a-zA-Z]*)?")
df=new_df.text.str.extract(pat)
 

Нужен вывод, подобный этому:

 String_Name = Sample String(just a / string)
Start_Date = 04/04/2014
Stop_Date = ongoing
 

Ответ №1:

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

 r'(?P<String_Name>.*?)s*(?P<START_DATE>d{1,2}/d{1,2}/d{2,4})stos (?P<stop_date>.*)'
 

Смотрите демонстрацию регулярных выражений. График регулярных выражений:

введите описание изображения здесь

Тест Pandas:

 df = pd.DataFrame({'text':['Sample String(just a / string) 04/04/2014 to ongoing']})
rx = r'(?P<String_Name>.*?)s*(?P<START_DATE>d{1,2}/d{1,2}/d{2,4})stos (?P<stop_date>.*)'
df1 = df['text'].str.extract(rx)
 

Вывод:

 >>> df1
                      String_Name  START_DATE stop_date
0  Sample String(just a / string)  04/04/2014   ongoing