使用正则表达式从pandas列中提取子字符串

时间:2019-01-23 10:23:00

标签: python regex pandas

我的列具有这样的值:

onClick

只需提取1/1/100(从第一行开始),依此类推(1/1/102 ...)

我正在使用:

Col1

1/1/100 'BA1
1/1/102Packe
1/1/102 'to_

但是我只有1个。

不确定为什么这不起作用,正则表达式是否有问题,或者我需要某种映射?

3 个答案:

答案 0 :(得分:2)

您只需要使用一个捕获组:

df['col1'] = df['col1'].str.extract('(\d+/\d+/\d+)', expand=True)
                                     ^           ^

str.extract方法返回第一个捕获组捕获的值,而您的正则表达式将第一个1捕获到该捕获组中。

测试:

>>> import pandas as pd
>>> df = pd.DataFrame({"col1":["1/1/100 'BA1", "1/1/102Packe", "1/1/102 'to_"]})
>>> df['col1'].str.extract('(\d+/\d+/\d+)', expand=True)
         0
0  1/1/100
1  1/1/102
2  1/1/102

答案 1 :(得分:0)

您也可以尝试一下

df['Col1']=df['Col1'].str.replace('\d+|/','')

注意:正则表达式比.str.replace更强大。

答案 2 :(得分:0)

我建议使用此正则表达式:

df['col1'].str.extract('\b(\d/?)+', expand=True)