熊猫:使用部分字符串搜索结果创建列

问题描述

我有两个数据帧df1df2。我正在使用下面的代码行在df1['comment']中搜索df2['label']中的部分字符串,该代码将返回一个具有True / False值的新列df1['match']

df1['match'] = df1['comment'].str.contains('|'.join(df2['label'].values),na=False)

现在,我不仅想要True / False df1['match']列,还希望显示在df2['label']中找到来自df1['match']的部分字符串中的哪一列。我尝试使用类似的

if df1['comment'].str.contains('|'.join(df2['label'].values),na=False) == True:

df1['label_item'] = df2['label'].values

但是它似乎不起作用。我还觉得编写if条件可能不是正确的选择,并且可能存在某种捷径可以解决这个问题。

非常感谢您的帮助!

解决方法

我认为您需要Series.str.findallSeries.str.join

df1['label_item'] = df1['comment'].str.findall(f'({"|".join(df2.label)})').str.join(',')

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...