Blu*_*ail 1 regex date regex-group python-3.x pandas
我在数据框中的一列中的测试中包含了一些日期。例如,
sr = pd.Series(['04/20/2009', '04/20/09', '4/20/09', '4/3/09', '6/2008','12/2009','2010'])
Run Code Online (Sandbox Code Playgroud)
我想提取这些日期......我一年中有一半的时间在“月”和“日”列中结束。
result = sr.str.extractall(r'(?P<month>\d{,2})[/]?(?P<day>\d{,2})[/]?(?P<year>\d{2,4})')
result
month day year
match
0 0 04 20 2009
1 0 04 20 09
2 0 4 20 09
3 0 4 3 09
4 0 6 20 08
5 0 12 20 09
6 0 20 NaN 10
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我只能想到将“'6/2008'、'12/2009'、'2010'”与“'04/20/2009'、'04/20/09'、'4/20/09'”分开处理,然后附加它们。
您可以针对月份和日期使匹配更加具体。
由于总是有一年,您可以将月份和日期的整个组设为可选。
在该可选组中,您可以将月份与可选日期相匹配。
(?<!\S)(?:(?P<month>1[0-2]|0?[1-9])/(?:(?P<day>3[01]|[12][0-9]|0?[1-9])/)?)?(?P<year>(?:20|19)?\d{2})(?!\S)
Run Code Online (Sandbox Code Playgroud)
在零件中
(?<!\S) 负向后视,断言直接在左边的不是非空白字符(左边的空白边界)(?: 非捕获组
(?P<month>1[0-2]|0?[1-9])/组月紧随其后/(?: 非捕获组
(?P<day>3[01]|[12][0-9]|0?[1-9])/团体日紧随其后/)? 关闭组并使其成为可选)? 关闭组并使其成为可选(?P<year>(?:20|19)?\d{2})组年份,可选择匹配 20 或 19 和 2 位数字(?!\S) 负前瞻,断言不是直接在右侧的非空白字符(右侧的空白边界)| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |