python - 仅使用完整单词过滤 DataFrame

标签 python pandas dataframe data-science

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

完整数据框:

<表类=“s-表”> <标题> 评论 情绪 <正文> 快速运行 0.9 大雨 0.5 在房子里 0.1 进来 0.0 摩擦它 -0.5

如果我设置一个子字符串来过滤我的表:

substring = 'in'
comp = complete[complete.apply(lambda row: row.astype(str).str.contains(substring, case=False).any(), axis=1)]

输出补偿:

<表类=“s-表”> <标题> 评论 情绪 <正文> 快速运行 0.9 大雨 0.5 在房子里 0.1 进来 0.0 摩擦它 -0.5

它返回相同的 DF,因为所有单词都有“in”作为子字符串。

我想要的输出:

<表类=“s-表”> <标题> 评论 情绪 <正文> 在房子里 0.1 进来 0.0

仅当子字符串被发现为单词而不是子字符串时才对其进行过滤。

如何做到这一点?

最佳答案

在模式中使用单词边界 (\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)]

关于python - 仅使用完整单词过滤 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74708259/

相关文章:

python - Dataframe 到 numpy 数组中,值以逗号分隔

python - 如何循环分组的 Pandas 数据框?

r - 拆分 data.frame 行并打乱其顺序

python - 尝试将函数应用于 Pandas 时间序列重采样时出错

python - 根据字符串列过滤分组数据框中的行

python - Tkinter:我如何动态创建一个可以销毁或删除的小部件?

python - Ren'Py : ModuleNotFoundError: No module named 'netrc'

python - 使用带有索引的 for 循环,解析为单独的列表

python - 多个 Django 存储后端系统

python - 使用 Pandas /数据框计算加权平均值