如何在pandas系列(而不是数据帧)上实现“not”过滤器

时间:2018-04-01 23:36:17

标签: python pandas

要使用的构造包括:

使用likeregexin进行过滤:

 series.filter(like='some pattern')

 series.filter(regex='some regex')

但那些正面而非 否定 过滤器..

Dataframe上,我们可以使用 not 执行tilde,如下所示:

  df.filter(~('some pattern' in df['some_column']))

Series无法提供。那么not上的Series过滤器是什么?

1 个答案:

答案 0 :(得分:1)

过滤系列的惯用方法是使用str.contains并否定结果。

series = series[~series.str.contains(pattern)]

如果您的模式不是正则表达式(而是一个简单的子字符串模式),我建议将列表理解作为更快的替代方案:

series = pd.Series([pattern not in v for v in series])
s = pd.Series(['ABC123', 'ABCdef', 'hijk'])

s[~s.str.contains('ABC')] 
2    hijk
dtype: object