Apache spark 如何使用pyspark对spark数据帧中新添加的列执行函数

Apache spark 如何使用pyspark对spark数据帧中新添加的列执行函数,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我试图使用文本在pyspark中创建一个新列,但当我试图使用该列执行某些函数时,它显示了如下错误 AttributeError:'NoneType'对象没有属性'show' 我的代码是 autodata1=autodata.withColumn('pricePerMPG',(col('PRICE')/(col('MPG-CITY')+col('MPG-HWY')/2))).show(truncate=False)` autodata1.show() from pyspark.sql.functi

我试图使用文本在pyspark中创建一个新列,但当我试图使用该列执行某些函数时,它显示了如下错误
AttributeError:'NoneType'对象没有属性'show'
我的代码是

autodata1=autodata.withColumn('pricePerMPG',(col('PRICE')/(col('MPG-CITY')+col('MPG-HWY')/2))).show(truncate=False)`
autodata1.show()
from pyspark.sql.functions import max
max = autodata1.agg({"pricePerMPG": "max"}).collect()[0]
print(max)
有人能帮我解决这个问题吗?

你的
show()
触发一个动作并返回一个非对象

autodata1=autodata.withColumn('pricePerMPG',(col('PRICE')/(col('MPG-CITY')+col('MPG-HWY')/2)))
autodata1.show(truncate=False)
from pyspark.sql.functions import max
max = autodata1.agg({"pricePerMPG": "max"}).collect()[0]
print(max)
您的
show()
触发一个操作并返回一个非对象

autodata1=autodata.withColumn('pricePerMPG',(col('PRICE')/(col('MPG-CITY')+col('MPG-HWY')/2)))
autodata1.show(truncate=False)
from pyspark.sql.functions import max
max = autodata1.agg({"pricePerMPG": "max"}).collect()[0]
print(max)
这里,您的
autodata
是一个数据帧,但当您在最后添加show时,它将返回单位,这就是为什么
autodata1
不是一个数据帧


这里您的
autodata
是一个数据帧,但当您在最后添加show时,它将返回单位,这就是为什么
autodata1
不是一个数据帧。

autodata1=autodata.withColumn('pricePerMPG',(col('PRICE')/(col('MPG-CITY')+col MPG-HWY')/2))。show(truncate=False)
删除此处的显示。它返回一个None对象。检查您的数据是否包含列
MPG-CITY
MPG-HWY
的值,如果它们是数字类型,则在任何情况下都是0。另外,请编辑您的问题,而不是在评论中发布更改。
autodata1=autodata.withColumn('pricePerMPG',(col('PRICE')/(col('MPG-CITY')+col('MPG-HWY')/2))。show(truncate=False)
删除此处的显示。它返回一个None对象。检查您的数据是否包含列
MPG-CITY
MPG-HWY
的值,如果它们是数字类型,则在任何情况下都是0。此外,请编辑您的问题,而不是张贴评论中的更改。