Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 筛选数据帧中的关键字/句子_Python_Pandas_Matching - Fatal编程技术网

Python 筛选数据帧中的关键字/句子

Python 筛选数据帧中的关键字/句子,python,pandas,matching,Python,Pandas,Matching,目前我有一个数据帧。以下是我的数据帧示例: 我还有一个关键字/句子列表。我想将其与“内容”列匹配,并查看是否有任何关键字或句子匹配 这就是我所做的 在给我结果的同时,它也给我这个UserWarning:UserWarning:这个模式有匹配组。要实际获取组,请使用str.extract。 返回函数(self、*args、**kwargs) 问题: 如何防止出现userwarning 查找并查看列中是否有匹配项后,如何在新列中打印特定匹配项 您正在提供用于搜索数据帧的。如果指令列表中有括号(

目前我有一个数据帧。以下是我的数据帧示例:

我还有一个关键字/句子列表。我想将其与“内容”列匹配,并查看是否有任何关键字或句子匹配

这就是我所做的

在给我结果的同时,它也给我这个UserWarning:UserWarning:这个模式有匹配组。要实际获取组,请使用str.extract。 返回函数(self、*args、**kwargs)

问题:

  • 如何防止出现userwarning
  • 查找并查看列中是否有匹配项后,如何在新列中打印特定匹配项
  • 您正在提供用于搜索数据帧的。如果指令列表中有括号(就像示例中的情况一样),那么这就构成了一个匹配组。为了避免这种情况,您必须避开它们(即:在它们前面添加
    \
    ,以便
    (严重风险)
    变成
    \(严重风险)
    )。您可能还希望转义所有特殊字符,如
    \。“

    现在,您可以使用这些组从数据中提取匹配项。以下是一个示例:

    df=pd.DataFrame([“Hello World”、“Foo Bar Baz”、“再见”],columns=[“text”])
    pattern=“(World | Bar)”
    打印(df.str.extract(模式))
    #        0
    #0世界
    #1巴
    #2楠
    

    您可以通过简单的赋值(例如
    df[“result”]=df.str.extract(pattern)

    )将此列添加到数据帧中。

    您可以共享1)熊猫的版本;2)指令列表吗?如果指令中有括号,这将解释“匹配组”“@qmeeus我已经更新了一些内置函数,允许转义所有特殊字符吗?当我尝试使用你在我处理的数据中提到的.str.extract(模式)时也是如此。我只收到南音。你知道是什么原因让它显示而不是匹配吗?是的,这意味着没有匹配。很可能你的正则表达式有点乱,因为你把完整的句子连在一起。考虑到您的用例,有什么方法可以简化它吗?否则,最好在指令列表上使用for循环
    # instructions_list is just the list of keywords and key sentences 
    instructions_list = instructions['Key words & sentence search'].tolist()
    pattern = '|'.join(instructions_list)
    
    
    bureau_de_sante[bureau_de_sante['Content'].str.contains(pattern, regex = True)]