使用pyspark将新列添加到数据框的问题

时间:2020-04-20 03:55:52

标签: pyspark apache-spark-sql pyspark-dataframes

说我运行这个

DF1.withColumn("Is_elite",
               array_intersect(DF1.year,DF1.elite_years))
    .show()

我得到了想要的结果,这是一个名为Is_elite的新列,具有正确的值和所有 然后在下一个命令中运行

DF1.show

这只是向我显示了如果不运行第一个命令,我的列丢失了,DF1会是什么样子。

1 个答案:

答案 0 :(得分:2)

由于您已经在该行中添加了.show()方法,因此它不会返回新的数据帧。进行以下更改并尝试

elite_df = DF1.withColumn("Is_elite",array_intersect(DF1.year,DF1.elite_years))
elite_df.show()

如果您对python中的对象感到困惑,请尝试打印对象的类型。

#the following must return a dataframe object. 
print(type(elite_df)) 

数据帧是不可变的,每次转换都会创建一个新的数据帧引用,因此,如果您尝试打印旧的数据报,则不会得到修改后的结果。