我有一个大的 DataFrame(名为:完整)数据(只有两列)。我想仅使用完整的单词而不是子字符串来过滤它。例如:
完整数据框:
如果我设置一个子字符串来过滤我的表:
substring = 'in'
comp = complete[complete.apply(lambda row: row.astype(str).str.contains(substring, case=False).any(), axis=1)]
输出补偿:
它返回相同的 DF,因为所有单词都有“in”作为子字符串。
我想要的输出:
仅当子字符串被发现为单词而不是子字符串时才对其进行过滤。
如何做到这一点?
最佳答案
在模式中使用单词边界 (\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)]
关于python - 仅使用完整单词过滤 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74708259/