如何在列中搜索列表中的字符串并创建包含所有实例的新列

2024-04-25 01:15:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在某个列df['description']中扫描keyword = ['x', 'y', 'z']中列出的关键字。我希望python加载找到的所有关键字,所以如果描述包含xy,它将同时显示这两个关键字

目前我的代码是这样的,但它只返回1个关键字,而不是所有实例:

keyword = ['x','y','z']
pattern = '|'.join(keyword)
def pattern_searcher(search_str: str, search_list: str):
    found_objects = re.findall(search_list, search_str)
    return found_objects if found_objects else ""
df['keyword'] = df['description'].apply(lambda x: pattern_searcher(search_str=x, search_list=pattern))```

1条回答
网友
1楼 · 发布于 2024-04-25 01:15:39
  1. 膨胀和爆炸
  2. 试验
  3. 合并匹配的项目
df = pd.DataFrame({"description":["hello world is here","foo is always a name"]})
keyword = ["is", "here", "name"]
df = df.assign(words=df["description"].str.split(" ")).explode("words")
df = df.assign(test=df["words"].isin(keyword))
df = df.loc[df["test"]].groupby("description").agg({"words":lambda x: list(x)}).reset_index()
df

输出

    description words
0   foo is always a name    [is, name]
1   hello world is here [is, here]

相关问题 更多 >