You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pyspark对DataFrame列四舍五入时报NoneType无select属性如何解决

问题原因
  • PySpark的show()是用于打印DataFrame内容的行动算子,返回值为None。你在给Auto_data1赋值的链式调用末尾直接加了.show(10),最终赋值给Auto_data1的不是计算得到的DataFrame,而是show()返回的空值,后续调用select方法自然会抛出NoneType无对应属性的报错。
  • 额外注意:你的需求是对perc_of_count_total列做四舍五入,但现有代码里select选中的是cnt_per_group列,和需求不符。
解决方法

调整代码把赋值和打印操作拆分即可,修改后参考代码如下:

# 先完成计算逻辑赋值给Auto_data1,不要末尾加show
Auto_data1 = Auto_data.groupBy("Make", "Fuel") \
            .count() \
            .withColumnRenamed('count', 'cnt_per_group') \
            .withColumn('perc_of_count_total',  (F.col('cnt_per_group') / tot) * 100 )

# 单独执行打印预览操作
Auto_data1.show(10)

# 对目标列执行四舍五入操作
Auto_data1.select(F.round(F.col('perc_of_count_total'),2)).show(5)

如果需要把四舍五入后的结果保存为DataFrame的新列,可以用withColumn实现:

Auto_data1 = Auto_data1.withColumn('perc_of_count_total_rounded', F.round(F.col('perc_of_count_total'),2))
Auto_data1.show()

内容的提问来源于stack exchange,提问作者user286076

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:54:07