关键词

详解pandas.str.extract()(提取字符串)函数使用方法

pandas.str.extract()是pandas库中的一个函数,用于从每个字符串中提取匹配给定正则表达式的第一个匹配子串。

使用方法:

pandas.str.extract(pat, flags=0, expand=True)

参数说明

  • pat:正则表达式的模式字符串
  • flags:re模块的匹配标志,如re.IGNORECASE、re.DOTALL等,默认为0,即没有标志
  • expand:是否将每个匹配的字符串拆分成新的列,默认为True

返回值

一个包含匹配子串的新Series或DataFrame。

实例1

假设我们想从以下网址中提取国家代码。

url = 'https://zh.wikipedia.org/wiki/ISO_3166-1'

使用正则表达式“(?<=)\s(([A-Z]{2}))$”,并将结果保存在名为“code”的新列中。

import pandas as pd

tables = pd.read_html(url)
df = tables[0]
df['code'] = df['名称(英文)'].str.extract('(?<=</a>)\s\(([A-Z]{2})\)$')
print(df)

输出:

                 英文短名称 二位代码 三位代码  ...     中文名称 ISO 3166 上標為独立主权 code
0          Afghanistan   AF  AFG  ...      阿富汗                是  NaN
1        Åland Islands   AX  ALA  ...       奥兰                否  NaN
2              Albania   AL  ALB  ...    阿尔巴尼亚                是  NaN
3              Algeria   DZ  DZA  ...    阿尔及利亚                是  NaN
4       American Samoa   AS  ASM  ...    美属萨摩亚                否  NaN
..                 ...  ...  ...  ...      ...              ...  ...
244  Wallis and Futuna   WF  WLF  ...  瓦利斯和富图纳                否  NaN
245     Western Sahara   EH  ESH  ...     西撒哈拉                否  NaN
246              Yemen   YE  YEM  ...       葉門                是  NaN
247             Zambia   ZM  ZMB  ...      尚比亞                是  NaN
248           Zimbabwe   ZW  ZWE  ...      辛巴威                是  NaN

[249 rows x 8 columns]

实例2

我们有一些电子邮件地址。 例如,

    emails = pd.Series(['abc@demo.com', 'info@example.com', 'support@pandas.com'])

现在我们想从中提取用户名和域名,使用正则表达式并将结果保存在新Series 中。

user_name = emails.str.extract(r'(\w+)@', expand=False)
domain_name = emails.str.extract(r'@(\w+.\w+)', expand=False)
print(user_name)
print(domain_name)

输出:

0        abc
1       info
2    support
dtype: object
0       demo.com
1    example.com
2     pandas.com
dtype: object

总结

使用pandas.str.extract(),我们可以快速从字符串中提取匹配给定正则表达式的第一个匹配子串。 该函数对于对文本数据的处理非常有用,例如从数据集中提取日期和时间信息,或从大量电子邮件地址中提取用户名和域名。

本文链接:http://task.lmcjl.com/news/17663.html

展开阅读全文