[英]How to use muliple condition using filter in scala?
我有一个包含两个字段的数据框。 字段名称之一是标签,其中包含与电影相关的所有单词。 我在 dataframe 中使用 AND 条件和过滤器。 我想获得包含这些词的标签(幽默、搞笑、搞笑、英国、保龄球)。 我尝试下面的语句但没有奏效。
val DF =dfAfterDrop.filter($"Tag like '%humor%'"&&
$"Tag like '%funny%'"&&
$"Tag like '%hilarious%'"&&
$"Tag like '%british%'"&&
$"Tag like '%bowling%'")
如何解决?
您可以尝试使用contains
方法:
val words = Seq("humor", "funny", "hilarious", "british", "bowling")
val DF = dfAfterDrop.filter(words.map($"Tag".contains(_)).reduce(_ or _))
您需要将表达式包装在expr
中,而不是$
(这是col
的别名,不是您想要的)。 另外我认为您打算使用OR
,而不是AND
,因为您想获取包含任何单词的行。
val DF = dfAfterDrop.filter(expr("Tag like '%humor%'") ||
expr("Tag like '%funny%'") ||
expr("Tag like '%hilarious%'") ||
expr("Tag like '%british%'") ||
expr("Tag like '%bowling%'")
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.