我有一个数据框,其中在原始文本列中给出了不同格式的日期的某些文本。我希望在单独的列中提取此日期
样本原始文本:
“销售助理@ 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)
与以上我是无法到提取所需的输出.请指导什么是我错过了
1条答案
按热度按时间g6ll5ycj1#
试试这个:
\(?
一个可选的(
。(?:[A-Za-z]{3,9}\s*)?
非捕获群[A-Za-z]{3,9}
在3-9
字母之间。\s*
零个或多个空白字符。?
使得整个群最优。(?:\d\d\/)?
非捕获基团。\d
0-9
之间的数字。\d
0-9
之间的另一个数字。\/
原义正斜杠/
。[12]\d{3}\s*
[12]
与所列数字1
或2
中的一个数字匹配。\d{3}
之间的三位数\s*
零个或多个空白字符。(?:–|-|[Tt][Oo])\s*
(?:–|-|[Tt][Oo])
与–
、-
、TO
、to
、To
或tO
匹配。\s*
零个或多个空白字符。(?:[A-Za-z]{3,9}\s*)?
,如上所述。(?:\d\d\/)?
,如上所述。[12]\d{3}
,如上所述。\)?
和可选的)
。参见regex demo