要使用的构造包括:
使用like
或regex
或in
进行过滤:
series.filter(like='some pattern')
series.filter(regex='some regex')
但那些正面而非 否定 过滤器..
在Dataframe
上,我们可以使用 not
执行tilde
,如下所示:
df.filter(~('some pattern' in df['some_column']))
但Series
无法提供。那么not
上的Series
过滤器是什么?
答案 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