извлечение даты с использованием регулярного выражения из ячейки в pandas кадре данных - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть следующий фрейм данных

column 1   Description                          Extracted Data
date       January 15,2020 is important day

Я хочу получить следующий результат

column 1   Description                          Extracted Data
date       January 15,2020 is important day     January 15,2020

df.loc[df['column 1']=='date','Extracted Data']=df['Description'].str.extract(r'((January)|[/. ])|(\d{1,2}|[/., ]|\d{4})')

, но я не получаю желаемого результата. Вместо этого я получаю фрейм данных с все значения NaN. Как я могу это исправить?

Ответы [ 3 ]

1 голос
/ 11 февраля 2020

Это работает: (Oneliner)

df['Extracted data'] = [re.match('[A-Za-z]+ \d{2},\d{4}',x)[0] for x in df['Description']]

вывод:

  column1                              Desc   Extracted data
0    date  January 15,2020 is important day  January 15,2020

Regex Link: https://regex101.com/r/ICDJCp/1

1 голос
/ 11 февраля 2020

Используйте многоточечное .* и цифры.

import pandas as pd

df = pd.DataFrame({'column 1': ['date'], 'Description': ['January 15,2020 is important day']})
df['Extracted Data'] = df['Description'].str.extract(r'(.*,\d{4})')

Выход:

  column 1                       Description   Extracted Data
0     date  January 15,2020 is important day  January 15,2020
0 голосов
/ 11 февраля 2020
import dateutil.parser as dparser
import pandas as pd

df = pd.DataFrame({'column 1': ['date'], 'Description': ['January 15,2020 is important day']})
df['Extracted Data'] = df['Description'].apply(lambda x: dparser.parse(x,fuzzy=True).strftime('%B %d %Y'))
print(df)
  column 1                       Description   Extracted Data
0     date  January 15,2020 is important day  January 15 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...