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()函数提取指定规则的字符串
假设有以下的一列数据:
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