📅  最后修改于: 2023-12-03 15:04:22.009000             🧑  作者: Mango
在Pandas中,Series.str.extract()是一个非常有用的方法。它的作用是根据指定的正则表达式提取Series中的匹配项,并返回一个新的Series。这个方法在数据清洗和预处理中非常常用。
Series.str.extract(pat, flags=0, expand=True)
假设我们有一个包含多个电话号码的Series:
import pandas as pd
s = pd.Series(['(555)555-5555', '555-555-5555', '555-5555'])
我们想要提取出其中的区号,可以使用如下的正则表达式:r'(?<=\()(\d{3})(?=\))|(\d{3})'
,其中:
(?<=\()(\d{3})(?=\))
:匹配括号内的3位数字|
:或者(\d{3})
:匹配不带括号的3位数字我们可以通过Series.str.extract()方法提取出符合这个正则表达式的字符串:
s.str.extract(r'(?<=\()(\d{3})(?=\))|(\d{3})')
结果如下:
0
0 555
1 555
2 555
我们还可以使用named groups,将匹配结果转化为DataFrame的列:
s.str.extract(r'(?P<area_code>\d{3})', expand=False)
结果:
area_code
0 555
1 555
2 555
Series.str.extract()还有很多使用技巧,比如:
总之,Series.str.extract()是一个非常强大且灵活的方法,可以在数据处理和分析中发挥重要作用。