详解str.extract()

str.extract()函数是pandas库中的一个非常有用的函数,也是一种正则表达式操作。它可以帮助我们从一个字符串中提取匹配特定正则表达式的子字符串,并将其转换到一个DataFrame或Series中。本文将从不同的方面详解它的使用方法和功能。

一、参数介绍

str.extract()函数共有4个参数:pat、flags、expand和regex。其中,pat和regex是必须的,它们是限定提取规则的正则表达式。flags和expand是可选的,flags用于传递修改正则表达式行为的参数,而expand则是一个布尔值,用于指示返回行为是DataFrame还是Series。

import pandas as pd
data = {'raw': ['256 lbs', '155 lbs', '125 lbs']}
df = pd.DataFrame(data)

df['weight'] = df['raw'].str.extract('(\d+)', expand=True)

print(df)

上述代码将一个DataFrame对象中的字符串列提取为数字型列”weight”。可以看到,我们首先定义了一个字典来生成一个DataFrame对象。接着,我们使用str.extract()函数,传入参数(\d+),它用于匹配一个或多个数字字符。在’expand=True’的条件下,该函数将保留提取列中与正则表达式模式匹配的字符串,并将其存储在名称为”weight”的新列中。

二、提取多个子字符串

str.extract()函数还可以同时提取多个符合规则的子字符串。在使用它时,只需要在提取规则中为每个待提取的组加上括号即可。

import pandas as pd
data = {'raw': ['John Smith, CA', 'Jane Doe, NY', 'Sam Johnson, TX']}
df = pd.DataFrame(data)

df[['name', 'state']] = df['raw'].str.extract('([A-Za-z\s]+),\s([A-Za-z]+)', expand=True)

print(df)

上述代码演示了如何从一个字符串列中同时提取人名和州名。我们首先定义一个DataFrame,然后使用str.extract()函数为正则表达式传递两个组,一个用于匹配人名、另一个用于匹配州名。在完成操作后,结果将存储在”df[[“name”, “state”]]”这个新DataFrame中,每个分量都由一个单独的子字符串组成。

三、使用命名组

当我们提取多个组时,为了避免后缀方式所带来的复杂性,我们可以使用命名组。使用命名组时,我们不再使用默认后缀方式,在返回值的列名中直接使用我们所定义的名称。

import pandas as pd
data = {'raw': ['001-1234', '022-5678', '057-9012']}
df = pd.DataFrame(data)

df[['area', 'number']] = df['raw'].str.extract('(?P<area>\d{3})-(?P<number>\d{4})')

print(df)

上述代码演示了如何使用命名组提取一个带有特定结构的字符串。“(?P<area><REGEX_EXPRESSION>)”语句用于定义一个名为”area”的组,该组是一个匹配三个数字字符的正则表达式。同样,语句“(?P<number><REGEX_EXPRESSION>)”用于定义一个名为”number”的组,该组使用了一个匹配四个数字字符的正则表达式。提取并将结果存储在新的DataFrame中的代码与前面类似。

四、自定义处理函数

在提取时,有时候需要通过一些额外的逻辑来处理或转换提取出来的结果。此时,我们可以将自定义的处理函数语句传递给”str.extract()”函数,并使其返回值成为新的提取列。

import pandas as pd
data = {'raw': ['256 lbs', '155 lbs', '125 lbs']}
df = pd.DataFrame(data)

def kg_to_lbs(x):
    return int(x) * 2.20462

df['weight_lbs'] = df['raw'].str.extract('(\d+)', expand=True).apply(kg_to_lbs)

print(df)

上述代码展示了如何使用自定义函数将从字符串列中提取出来的数字转换为重量单位lb。我们首先定义了一个字典数据,然后定义了一个自定义的方法”kg_to_lbs()”,该方法将基于获取的重量值将其从公斤转换成磅单位。接着,我们使用”apply()”函数将该方法映射到提取出来的值上,并将其存储在名称为”weight_lbs”的新列中。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/227422.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-09 16:29
下一篇 2024-12-09 16:29

相关推荐

  • Python中str的用法解析

    Python是一种非常流行的编程语言,被广泛用于各种项目和应用程序的开发,其中str类型是python语言非常重要的一部分。在本文中,我们将从多个方面对Python中str类型进行…

    编程 2025-04-27
  • Python中的str和int类型

    Python是一种高级编程语言,有许多基本数据类型。其中,str和int是两个最常用的数据类型之一。str是指字符串类型,表示一连串的字符,而int则是整数类型,表示正负整数。在本…

    编程 2025-04-27
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • C语言贪吃蛇详解

    一、数据结构和算法 C语言贪吃蛇主要运用了以下数据结构和算法: 1. 链表 typedef struct body { int x; int y; struct body *nex…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25

发表回复

登录后才能评论