查找文本中的完全匹配

时间:2020-04-14 14:02:45

标签: python pandas

我有一个包含评论的数据集。我想在此文本中搜索确切的字符串。

例如此数据集的一部分:

这位牙医很棒
这个牙医很棒,但是他的助手很糟糕
完美
我不喜欢我的牙医,他并不完美

当数据集中出现字符串“ perfect”和“这位牙医很棒”时,必须在新数据集中返回它们。但前提是完全匹配。因此,只有第1行和第3行应返回到数据集中。

我的脚本返回所有行:

df_return=df[df["columnA"].str.contains("perfect|this dentist is great")==True]
df_return

我在做什么错了?

4 个答案:

答案 0 :(得分:1)

使用直等号==而不是包含

if df["columnA"].str == 'perfect' or df["columnA"].str == 'this dentist is great':
    print(["columnA"].str)

if df["columnA"].str in {'perfect', 'this dentist is great'}:
    print(["columnA"].str)

答案 1 :(得分:1)

也许您可以使用match进行相同的检查

df_return = df[df['columnA'].str.match(pat='(perfect)|(this dentist is great)')]
df_return

请告诉我这是否有帮助!

答案 2 :(得分:0)

您的正则表达式不正确,请替换为

df_return=df[df["columnA"].str.contains("^perfect$|^this dentist is great$")==True]

输出:

                 columnA
0  this dentist is great
2                perfect

答案 3 :(得分:0)

类似的方法可能有用-

def who_is_bigger(a, b, c)
  biggest = binding.local_variables.max_by do |v|
              binding.local_variable_get(v) || -Float::INFINITY
            end
  "#{biggest} is biggest"
end

who_is_bigger(10, 21, 30)
=> "c is biggest"

who_is_bigger(40, 31, 30)
=> "a is biggest"