gpt4 book ai didi

python - Spark join 抛出 'function' object has no attribute '_get_object_id' 错误。我该如何解决?

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:18 25 4
gpt4 key购买 nike

我在 Databricks 的 Spark 中进行查询,当我尝试在两个数据帧之间进行连接时遇到问题。我拥有的两个数据框是下一个:

  • “names_df”有 2 列:“ID”、“title”,指的是电影的 ID 和标题。

    +-------+-----------------------------+
    |ID |title |
    +-------+-----------------------------+
    |1 |Toy Story |
    |2 |Jumanji |
    |3 |Grumpier Old Men |
    +-------+-----------------------------+
  • “info”有 3 列:“movieId”、“count”、“average”,指的是电影的 ID、它的排名数以及这些评分的平均值。

    +-------+-----+------------------+
    |movieId|count|average |
    +-------+-----+------------------+
    |1831 |7463 |2.5785207021305103|
    |431 |8946 |3.695059244355019 |
    |631 |2193 |2.7273141814865483|
    +-------+-----+------------------+

这个“信息”数据框是这样创建的:

info =  ratings_df.groupBy('movieId').agg(F.count(ratings_df.rating).alias("count"), F.avg(ratings_df.rating).alias("average"))

其中“ratings_df”是另一个包含 3 列的数据框:“userId”、“movieId”和“rating”,分别表示投票的用户 ID、用户投票的电影 ID,以及该电影的评级:

+-------+-------+-------------+
|userId |movieId|rating |
+-------+-------+-------------+
|1 |2 |3.5 |
|1 |29 |3.5 |
|1 |32 |3.5 |
+-------+-------+-------------+

我正在尝试在这两个数据帧之间进行连接,以获得另一个包含这些列的数据帧:“movieId”、“title”、“count”、“average”:

+-------+-----------------------------+-----+-------+
|average|title |count|movieId|
+-------+-----------------------------+-----+-------+
|5.0 |Ella Lola, a la Trilby (1898)|1 |94431 |
|5.0 |Serving Life (2011) |1 |129034 |
|5.0 |Diplomatic Immunity (2009? ) |1 |107434 |
+-------+-----------------------------+-----+-------+

所以我做的操作是下一个:

movie_names_df = info.join(movies_df, info.movieId == movies_df.ID, "inner").select(movies_df.title, info.average, info.movieId, info.count).show()

问题是我收到下一条错误消息:

AttributeError: 'function' object has no attribute '_get_object_id'

我知道发生此错误是因为它认为 info.count 是一个函数,而不是我之前定义的属性。

那么,我怎样才能正确地连接以获得我想要的东西呢?

非常感谢!

最佳答案

添加评论作为答案,因为它解决了问题。 count 在某种程度上是 DataFrame API 中 protected 关键字,因此命名列 count 是危险的。在您的情况下,您可以通过不使用点符号来规避错误,而是使用基于括号的列访问,例如

info["count"]

关于python - Spark join 抛出 'function' object has no attribute '_get_object_id' 错误。我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39364283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com