如何从不同的数据框中按列过滤数据框?

问题描述 投票:0回答:1

我想使用来自不同数据帧的字符串按列过滤数据帧。

val booksReadBestAuthors = userReviewsWithBooksDetails.filter(col("authors").isin(userReviewsAuthorsManyRead:_*))

  val userReviewsAuthorsManyRead = userReviewsWithBooksDetails.filter($"authors".isNotNull).groupBy(col("authors"))
                                              .agg(count("review/score").alias("count"), avg("review/score").alias("avg_score"))
                                              .filter($"avg_score" >= 4)
                                              .sort($"count".desc, $"avg_score".desc)
                                              .limit(5)
                                              .select("authors")
                                              .collect.toList.asInstanceOf[List[String]]

我想按 userReviewsAuthorsManyRead 的值过滤作者列

作者栏看起来像这样: 点击

我收到错误: “不支持该功能:org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema 类的“[Agatha Christie]”文字。”

dataframe scala apache-spark
1个回答
0
投票

只需使用作者列进行内部联接,无需收集。

booksReadBestAuthors.join(userReviewsAuthorsManyRead,"Authors").show

输入:

书籍阅读最佳作者:

+-------+
|Authors|
+-------+
|Author1|
|Author2|
|Author3|
+-------+

用户评论作者很多阅读:

+-------+
|Authors|
+-------+
|Author2|
|Author3|
+-------+

输出:

+-------+
|Authors|
+-------+
|Author2|
|Author3|
+-------+
© www.soinside.com 2019 - 2024. All rights reserved.