我的列具有这样的值:
onClick
只需提取1/1/100(从第一行开始),依此类推(1/1/102 ...)
我正在使用:
Col1
1/1/100 'BA1
1/1/102Packe
1/1/102 'to_
但是我只有1个。
不确定为什么这不起作用,正则表达式是否有问题,或者我需要某种映射?
答案 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)