pandas 从文本中解析不同格式的日期

cld4siwp  于 2023-01-11  发布在  其他
关注(0)|答案(1)|浏览(165)

我有一个数据框,其中在原始文本列中给出了不同格式的日期的某些文本。我希望在单独的列中提取此日期
样本原始文本:
“销售助理@ DFS持续时间-2021年6月-2023年11月目前在XYZ公司工作。在该职位范围内,我有望实现销售目标,目前我没有任何问题。工作职位/机构-抹灰工@ XX抹灰工持续时间-2016年9月-2016年11月工作职位/机构-客户顾问@ AA持续时间-**(2015 - 2016)**工作角色/机构-仓库操作员@ xyz持续时间-2014年3月至2015年8月在xyz仓库工作角色/机构-机场航站楼助理@ port持续时间-2012年1月至2013年6月在机场工作。工作角色/机构-见习防洪员@ YY楼层持续时间-2010年12月至2012年4月
预期 Dataframe :

id      Raw_text                   Dates
01     "sample_raw_text"         June 2021 - 2023 , September 2016 - Nov 2016,(2015 – 2016),03/2014 to 08/2015 , 01/2012 - 06/2013, DEC 2010 – APRIL 2012

我尝试过以下模式:

def extract_dates(df, column):
    # Define the regex pattern to match dates in different month formats
    pattern = r'(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)?[-,\s]*\d{1,2}[-,\s]*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)?[-,\s]*\d{2,4}\s*[-–]\s*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)?[-,\s]*\d{1,2}[-,\s]*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)?[-,\s]*\d{2,4}'

    # Extract the dates from the specified column
    df['Dates'] = df[column].str.extract(pattern)

与以上我是无法到提取所需的输出.请指导什么是我错过了

g6ll5ycj

g6ll5ycj1#

试试这个:

\(?(?:[A-Za-z]{3,9}\s*)?(?:\d\d\/)?[12]\d{3}\s*(?:–|-|[Tt][Oo])\s*(?:[A-Za-z]{3,9}\s*)?(?:\d\d\/)?[12]\d{3}\)?
  • \(?一个可选的(
  • (?:[A-Za-z]{3,9}\s*)?非捕获群
  • [A-Za-z]{3,9}3-9字母之间。
  • \s*零个或多个空白字符。
  • ?使得整个群最优。
  • (?:\d\d\/)?非捕获基团。
  • \d0-9之间的数字。
  • \d0-9之间的另一个数字。
  • \/原义正斜杠/
  • [12]\d{3}\s*
  • [12]与所列数字12中的一个数字匹配。
  • \d{3}之间的三位数
  • \s*零个或多个空白字符。
  • (?:–|-|[Tt][Oo])\s*
  • (?:–|-|[Tt][Oo])-TOtoTotO匹配。
  • \s*零个或多个空白字符。
  • (?:[A-Za-z]{3,9}\s*)?,如上所述。
  • (?:\d\d\/)?,如上所述。
  • [12]\d{3},如上所述。
  • \)?和可选的)

参见regex demo

相关问题