如何在pandas filter方法中使用正则表达式检索series对象的行?


通过使用regex参数,我们可以将正则表达式应用于filter()方法,这有助于检索series对象的指定行。Pandas series构造函数中series.filter()方法的基本工作原理是根据索引标签对series对象的行进行子集选择。

regex参数用于定义一个搜索模式(正则表达式),该模式用于检索结果行。

示例1

在下面的示例中,我们使用整数列表创建了一个series对象,并使用pandas数据范围函数创建索引标签。

# importing pandas package
import pandas as pd

# create date index
index = pd.date_range('2021-08-1', periods=10, freq='10H30min40s')

#creating pandas Series with date-time index
series = pd.Series([1,2,3,4,5,6,7,8,9,10], index=index)

print(series)

print("Output: ")
# Apply the filter method with regex
print(series.filter(regex='40$'))

解释

在这里,我们通过使用regex参数指定搜索模式来过滤pandas series对象中的某些行。

输出

输出如下:

2021-08-01 00:00:00    1
2021-08-01 10:30:40    2
2021-08-01 21:01:20    3
2021-08-02 07:32:00    4
2021-08-02 18:02:40    5
2021-08-03 04:33:20    6
2021-08-03 15:04:00    7
2021-08-04 01:34:40    8
2021-08-04 12:05:20    9
2021-08-04 22:36:00    10
Freq: 37840S, dtype: int64

Output:
2021-08-01 10:30:40    2
2021-08-02 18:02:40    5
2021-08-04 01:34:40    8
Freq: 113520S, dtype: int64

我们可以注意到上面的输出块,我们已经成功地过滤了索引中包含40秒的series对象的行。

示例2

让我们再取一个series对象,过滤掉索引标签名称中包含空格的行。

# importing pandas package
import pandas as pd

Countrys = ['Brazil','Canada','New Zealand','Iceland', 'India', 'Sri Lanka', 'United    States']
Capitals = [ 'Belmopan','Ottawa','Wellington','Reykjavik', 'New Delhi','Colombo',          'Washington D.C']

#creating pandas Series
series = pd.Series(Capitals, index=Countrys)

print(series)

print("Output: ")
# Apply the filter method with regex
print(series.filter(regex='. .'))

输出

输出如下:

Brazil                 Belmopan
Canada                   Ottawa
New Zealand          Wellington
Iceland               Reykjavik
India                 New Delhi
Sri Lanka               Colombo
United States    Washington D.C
dtype: object

Output:
New Zealand        Wellington
Sri Lanka             Colombo
United States  Washington D.C
dtype: object

在上面的输出中,我们已经成功地从series对象中过滤掉了名为“新西兰”、“斯里兰卡”、“美国”的几行。

更新于:2022年3月7日

226 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告