熊猫正则表达式-条件匹配

时间:2020-10-13 15:12:26

标签: python python-3.x regex pandas

我有一个这样的数据框:

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字母的课程代码。

2 个答案:

答案 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

如果要使用正则表达式,则应说明所需的字符串第一部分的结构。