我有一个包含评论的数据集。我想在此文本中搜索确切的字符串。
例如此数据集的一部分:
这位牙医很棒
这个牙医很棒,但是他的助手很糟糕
完美
我不喜欢我的牙医,他并不完美
当数据集中出现字符串“ perfect”和“这位牙医很棒”时,必须在新数据集中返回它们。但前提是完全匹配。因此,只有第1行和第3行应返回到数据集中。
我的脚本返回所有行:
df_return=df[df["columnA"].str.contains("perfect|this dentist is great")==True]
df_return
我在做什么错了?
答案 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"