📜  Python| Pandas Series.str.extract()(1)

📅  最后修改于: 2023-12-03 15:04:22.009000             🧑  作者: Mango

Python | Pandas Series.str.extract()

在Pandas中,Series.str.extract()是一个非常有用的方法。它的作用是根据指定的正则表达式提取Series中的匹配项,并返回一个新的Series。这个方法在数据清洗和预处理中非常常用。

语法
Series.str.extract(pat, flags=0, expand=True)
  • pat:指定提取的正则表达式
  • flags:正则表达式的匹配模式
  • expand:是否将匹配的结果转为DataFrame,默认为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()还有很多使用技巧,比如:

  • 提取文本中的日期、时间、邮箱、URL等
  • 只提取数字或文字,忽略其他字符
  • 将不同类型的数据分割成不同的列
  • 提取多个匹配项,合并为一个字符串或列表

总之,Series.str.extract()是一个非常强大且灵活的方法,可以在数据处理和分析中发挥重要作用。