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

complete dataframe:

comment sentiment
fast running 0.9
heavily raining 0.5
in the house 0.1
coming in 0.0
rubbing it -0.5

如果我设置一个子字符串来筛选我的表:

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

output comp:

comment sentiment
fast running 0.9
heavily raining 0.5
in the house 0.1
coming in 0.0
rubbing it -0.5

它返回相同的df,因为所有单词都有"in"作为子字符串.

My desired output:

comment sentiment
in the house 0.1
coming in 0.0

仅当子字符串是单词而不是子字符串时才对其进行筛选.

如何才能做到这一点?

推荐答案

在图案中使用单词边界(\b):

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

如果您有许多列要判断,则在后面进行聚合(这比使用axis=1apply列要高效得多):

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

Python相关问答推荐

删除任何仅包含字符(或不包含其他数字值的邮政编码)的观察

使用索引列表列表对列进行切片并获取行方向的向量长度

运行Python脚本时,用作命令行参数的SON文本

输出中带有南的亚麻神经网络

所有列的滚动标准差,忽略NaN

从嵌套的yaml创建一个嵌套字符串,后面跟着点

无法连接到Keycloat服务器

如何在TensorFlow中分类多个类

Flash只从html表单中获取一个值

当HTTP 201响应包含 Big Data 的POST请求时,应该是什么?  

如何在PythonPandas 中对同一个浮动列进行逐行划分?

read_csv分隔符正在创建无关的空列

查找查找表中存在的列值组合

在一个数据帧中,我如何才能发现每个行号是否出现在一列列表中?

在聚合中使用python-polars时如何计算模式

将标签与山脊线图对齐

将参数从另一个python脚本中传递给main(argv

根据边界点的属性将图划分为子图

为什么这个正则表达式没有捕获最后一次输入?

SQL模型中包含日期时间的TypeError