【发布时间】:2020-10-13 15:12:26
【问题描述】:
我有一个这样的数据框:
pd.DataFrame({'course_code': ['BUS225 - DC - 02-21-17',
'N320L - EM8 - 01-21-20 - Sect1', 'N495 - LA8 - 05-14-19 - Sect3']})
我正在尝试编写一个正则表达式(使用 pandas),它会返回以下输出:
pd.DataFrame({'course_code': ['BUS225', 'N320L', 'N495']})
目前这是我的代码:
df.course_code.str.extract(r'(\A\D\D\D\d\d\d)')
我知道我在这里遗漏了一些东西。我很难捕捉“L”,以及处理在字符串开头有 3 个字母与 1 个字母的课程代码。
【问题讨论】:
-
使用
df.course_code.str.split(r' - ').str[0] -
或者,
df.course_code.str.extract(r'^([A-Z]+\d+[A-Z]*)') -
谢谢维克托!
-
提醒一下,建议的答案使用 pandas 的字符串方法,因为这里不需要正则表达式,这是一个非常简单的 pandas 操作问题。我很感激解释为什么我的答案是错误的,因为我很难看到自己。让我们用常识正确地使用投票功能。
-
我所做的每一个带有正则表达式标记的答案都被否决了,真是巧合。 SO中正确行为的一个糟糕的例子
标签: python python-3.x regex pandas