0.9 0.5 0.1在 0.0摩擦它 -0.5
我有一个大的DataFrame(名为:complete)的数据(只有两列)。我想只使用完整的单词来过滤,而不是使用子字符串。例:
完成dataframe:
情绪th>在你的模式中使用词边界(b
):
substring = 'in'
comp = complete[complete['comment'].str.contains(fr'b{substring}b', case=False)]
如果你有很多列要检查,聚合之后(这比apply
和axis=1
更有效):
comp = complete[complete[list_of_cols].apply(lambda s: s.str.contains(fr'b{substring}b', case=False)).any(axis=1)]
另一种可能的解决方案,使用lookaround
和w
表示单词字符,!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