我有一个这样的数据框:
pd.DataFrame({'course_code': ['BUS225 - DC - 02-21-17',
'N320L - EM8 - 01-21-20 - Sect1', 'N495 - LA8 - 05-14-19 - Sect3']})
我正在尝试编写一个正则表达式(带有大熊猫),该正则表达式返回以下输出:
pd.DataFrame({'course_code': ['BUS225', 'N320L', 'N495']})
此刻是我的代码:
df.course_code.str.extract(r'(\A\D\D\D\d\d\d)')
我知道我在这里缺少什么。我很难捕捉到“ L”,并且要处理在字符串开头具有3个alpha字母对1个alpha字母的课程代码。
答案 0 :(得分:1)
分割第一次出现的定界符' - '
并保留第一个元素就足够了:
df['course_code'] = df.course_code.str.split(' - ', n=1, expand=True)[0]
print(df)
course_code
0 BUS225
1 N320L
2 N495
答案 1 :(得分:0)
您可以将lambda表达式与split函数一起使用。在您的问题中,用“-”分隔可以很好地工作,并且您无需为其找到正则表达式:
null
如果要使用正则表达式,则应说明所需的字符串第一部分的结构。