提取所有日期 - 如何在 python 中使用 RegEx 分隔单个年份?
Extractall dates - how to separate single years with RegEx in python?
我的数据框的其中一列的测试中包含了一些日期。
例如,
sr = pd.Series(['04/20/2009', '04/20/09', '4/20/09', '4/3/09', '6/2008','12/2009','2010'])
我想提取这些日期..
我一年的一半时间在 'month' 和 'day' 列中。
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
我该如何解决这个问题?
我只能想到将“'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)
部分
(?<!\S)
否定向后看,断言直接在左边的不是非空白字符(左边的空白边界)
(?:
非捕获组
(?P<month>1[0-2]|0?[1-9])/
组月后跟[=14=]
(?:
非捕获组
(?P<day>3[01]|[12][0-9]|0?[1-9])/
组天后跟[=14=]
)?
关闭组并使其可选
)?
关闭组并使其可选
(?P<year>(?:20|19)?\d{2})
组年,可选择匹配20或19和2位数字
(?!\S)
否定前瞻,直接在右侧断言不是非空白字符(右侧的空白边界)
我的数据框的其中一列的测试中包含了一些日期。 例如,
sr = pd.Series(['04/20/2009', '04/20/09', '4/20/09', '4/3/09', '6/2008','12/2009','2010'])
我想提取这些日期.. 我一年的一半时间在 'month' 和 'day' 列中。
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
我该如何解决这个问题?
我只能想到将“'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)
部分
(?<!\S)
否定向后看,断言直接在左边的不是非空白字符(左边的空白边界)(?:
非捕获组(?P<month>1[0-2]|0?[1-9])/
组月后跟[=14=](?:
非捕获组(?P<day>3[01]|[12][0-9]|0?[1-9])/
组天后跟[=14=]
)?
关闭组并使其可选
)?
关闭组并使其可选(?P<year>(?:20|19)?\d{2})
组年,可选择匹配20或19和2位数字(?!\S)
否定前瞻,直接在右侧断言不是非空白字符(右侧的空白边界)