如何在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对象中过滤掉了名为“新西兰”、“斯里兰卡”、“美国”的几行。
广告