【问题标题】:Python Code Returning an Unrecognized ErrorPython 代码返回无法识别的错误
【发布时间】:2020-10-08 10:25:42
【问题描述】:

我收到以下语法错误

SyntaxError: invalid syntax
  File "<command-3092209798892761>", line 6
    .agg(avg("sale_price").as("average_price"))
                            ^

使用以下代码:

t1.join(t2, Seq("make", "model"))\
  .filter(abs(t2("engine_size") - t1("engine_size")) <= BigDecimal("0.1"))\
  .groupBy("registration")\
  .agg(avg("sale_price").as("average_price"))

谁能帮忙解释一下这个错误

【问题讨论】:

  • 作为python中保存的关键字,你确定这是你要运行的函数吗?
  • 嗨@Mogi,感谢您与我们联系。是的,如果我尝试运行,我需要它作为示例。另外,您能告诉我函数 Seq() 的作用/含义吗?
  • 您能解释一下为什么会出现语法错误吗?
  • 为了您的信息,我从这里得到了代码coxautomotivedatasolutions.github.io/datadriven/spark/…
  • ahhhhh .... 我只是想,代码可能需要用 Scala 编写吗?

标签: python pyspark


【解决方案1】:

as 是一个 Python 关键字 - 例如,您可以看到它在 import numpy as np 中使用。

这使得无法将其用作变量、函数或方法名称。

在使用 Python 时,您应该使用等效的 alias

t1.join(t2, Seq("make", "model"))\
  .filter(abs(t2("engine_size") - t1("engine_size")) <= BigDecimal("0.1"))\
  .groupBy("registration")\
  .agg(avg("sale_price").alias("average_price"))

【讨论】:

  • Thierry,关于 Python 中别名的 cmets,这就是我的想法。但是,为什么我不能只使用我们 AS average_price?另外,你能告诉我 Seq() 是做什么的吗?
  • 我现在在 Python NameError: name 't1' is not defined 中遇到错误可能我需要在 Scala 中编写这个?
  • 当我尝试在 scala 中运行代码时,如链接中所述,收到以下错误:command-3092209798892765:2: error: not found: value abs .filter(abs(t2("engine_size") - t1("engine_size")) &lt;= BigDecimal("0.1")) ^ command-3092209798892765:4: error: not found: value avg .agg(avg("sale_price").as("average_price")).collect() ^
  • 我认为有人可以帮助我,他们需要查看链接中的示例coxautomotivedatasolutions.github.io/datadriven/spark/…
  • 请注意,SO 要求重点关注问题,以便他们有机会对遇到相同或非常相似问题的其他用户有用。由于这些是不同的问题,如果您无法解决这些问题,您可能应该问另一个问题。
猜你喜欢
  • 1970-01-01
  • 2020-10-05
  • 2022-01-12
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 2017-08-13
相关资源
最近更新 更多