仅使用完整字筛选DataFrame



我有一个大的DataFrame(名为:complete)的数据(只有两列)。我想只使用完整的单词来过滤,而不是使用子字符串。例:

完成dataframe:

情绪th>0.50.0摩擦它-0.5

在你的模式中使用词边界(b):

substring = 'in'
comp = complete[complete['comment'].str.contains(fr'b{substring}b', case=False)]

如果你有很多列要检查,聚合之后(这比applyaxis=1更有效):

comp = complete[complete[list_of_cols].apply(lambda s: s.str.contains(fr'b{substring}b', case=False)).any(axis=1)]

另一种可能的解决方案,使用lookaroundw表示单词字符,!w表示没有单词字符。参考demonstration来理解逻辑。

sub = 'in'
df.loc[df.comment.str.contains(fr'(?<!w){sub}(?!w)'), :]

输出:

comment  sentiment
2  in the house        0.1
3     coming in        0.0

最新更新