关键词

详解pandas.Series.str.extract()(提取序列中的字符串)函数使用方法

pandas.Series.str.extract()是pandas库中Series类型中的一个方法,主要用于提取符合正则表达式模式的字符串,并返回新的DataFrame类型。它的主要作用是从Series中提取出符合特定模式的字符串,并将其保存到新的列中。

语法

pandas.Series.str.extract(pat)

第一个参数pat是正则表达式,指定要匹配的模式。这个函数主要用于查找字符串中符合指定规则的内容,并返回新的DataFrame对象。

基本说明

extract方法返回的是一个新的DataFrame对象,其中包含符合指定规则的所有字符串。新的DataFrame对象的列名为0,1,2....左侧的索引与原来的Series相同。如果正则表达式没有匹配到任何结果,则返回的新的DataFrame对象也为空。

使用方法

使用Series.str.extract()函数提取指定规则的字符串

在DataFrame中提取数据

假设有以下的一列数据:

import pandas as pd
import numpy as np

# 构造数据集
df = pd.DataFrame({'key': ['foo', 'bar', 'baz'],
                   'value': ['2018-01-01 10:31:10', '2018-02-02 11:33:00', '2018-03-04 12:02:03']})
# 显示数据集
print(df)

输出结果:

   key                value
0  foo  2018-01-01 10:31:10
1  bar  2018-02-02 11:33:00
2  baz  2018-03-04 12:02:03

将value列分割成日期和时间两列,使用Series.str.extract方法,代码如下:

df[['date', 'time']] = df['value'].str.extract('(\d{4}-\d{2}-\d{2})\s(\d{2}:\d{2}:\d{2})')
print(df)

输出结果:

   key                value        date      time
0  foo  2018-01-01 10:31:10  2018-01-01  10:31:10
1  bar  2018-02-02 11:33:00  2018-02-02  11:33:00
2  baz  2018-03-04 12:02:03  2018-03-04  12:02:03

使用正则表达式过滤字符串

假设我们有以下的一个字符串:

import pandas as pd
import numpy as np

# 构造数据集
text = 'foo for foo@bar.com, bar for bar@foo.com, baz for baz@foo.com'
# 定义正则表达式
pattern = '(\w+)@foo.com'

# 使用Series.str.extract方法提取符合规则的字符串
s = pd.Series(text.split(','))
s.str.extract(pattern)

输出结果:

     0
0  bar
1  baz

从以上代码中可以看出,使用Series.str.extract方法可以很容易地实现了用正则表达式过滤字符串的功能,提取符合规则的字符串,并返回到一个新的Series中。

注意:这个方法并不是返回一个子字符串,而是返回与指定模式匹配的整个子串。除非使用括号将字符串分组,否则提取的结果将只是该模式的第一个匹配项。

总结

本文主要介绍了pandas.Series.str.extract()方法的使用,并给出了该方法的两个实例。pandas.Series.str.extract()可以有效地在Series类型数据中,提取符合正则表达式模式的字符串,并返回新的DataFrame类型。使用Series.str.extract方法可以对文本数据进行切割和过滤,从而更好地实现文本数据的处理。

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

展开阅读全文