我在Excel中有以下数据
Work_Experience
6 Year(s) 1 Month(s)
12 Year(s) 11 Month(s)
10 Year(s) 10 Month(s)
10 Year(s) 2 Month(s)
2 Year(s) 12 Month(s)
现在,我希望Python中应该有两个额外的列作为输出生成,其中B列中包含年数(数字),C列中包含月数(数字),如下所示的输出
Work_Experience Year Month
6 Year(s) 1 Month(s) 6 1
12 Year(s) 11 Month(s) 12 11
10 Year(s) 10 Month(s) 10 10
10 Year(s) 2 Month(s) 10 2
2 Year(s) 12 Month(s) 2 12
我尝试了下面的代码
Test[['Year','Month']] = Test['Work_Experience'].str.extract(\(\d+)(\d+))
它显示语法错误:行继续符后出现意外字符
2条答案
按热度按时间siotufzp1#
您可以使用
str.extract
:输出:
备选方案
如果您需要一种替代方法,以任意顺序提取名称并自动将下一个单词指定为列名:
y0u0uwnf2#
您的模式
\(\d+)(\d+)
以匹配\(\d+)
中的文字括号\(
开始,但其后有一个含义不同的未闭合(未转义)括号。数字之间也有字符不匹配。str.extract
时,必须将正则表达式放在引号之间如果要组合匹配括号和数字分组:
\b
字边界(\d+)
在第1组中捕获1+个数字\s+Year\(s\)\s+
在1+个空白字符之间匹配Year(s)
(\d+)
捕获第2组中的1+个数字\s+Month\(s\) Match 1+ whitspace chars and
个月'参见regex101 demo。
产出