繁体   English   中英

如何在 scala 中使用过滤器使用多重条件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM