PySpark调用select报错AttributeError: 'NoneType'无select属性怎么解决
报错原因
show()是PySpark DataFrame的动作算子,作用是直接向控制台输出数据,无返回值(默认返回None)。你在编写筛选代码时,将.show(5)的执行结果直接赋值给了df变量,导致df实际存储的是None而非DataFrame对象,后续调用select方法时自然触发属性不存在的报错。
你之前执行筛选代码时看到的表格输出,是show(5)运行时直接打印的内容,并非赋值给df的有效返回值。
修正方案
步骤1:调整筛选代码的写法,拆分赋值和预览操作
import pyspark.sql.functions as f # 先将筛选后的DataFrame赋值给df变量 df = emp_data.filter((f.col("POSTAL") == 2148) | (f.col("POSTAL") == 2125)) # 单独调用show方法预览数据 df.show(5)
步骤2:执行姓名拆分操作
df_new = df.select(f.split(f.col("NAME"), ',')) df_new.show(3)
可选优化:拆分姓名为独立列
如果需要把拆分后的姓、名拆为两个独立字段,可以使用如下写法:
df = df.withColumn("姓氏", f.split(f.col("NAME"), ',').getItem(0))\ .withColumn("名字", f.split(f.col("NAME"), ',').getItem(1)) df.show(3)
内容的提问来源于stack exchange,提问作者Hera Najam
相关产品推荐
相关产品推荐

