我有一个timestamp列,我想从此列创建year列。我知道如何显示它,但无法在数据集中创建一列。到目前为止,我已经尝试过:
data = data.withColumn('Year', data.select(year(('Date')))
但是它抛出一个错误:
AssertionError:col应该是Column
我能够证明这样做的年份:
data.select(year('Date').alias('Year')).show()
答案 0 :(得分:2)
您需要为年份功能添加一列。以下将起作用:
data = data.withColumn('Year', year(col('Date')))
答案 1 :(得分:0)
Spark的数据模型可能有点令人困惑。
Spark SQL函数和UDF对“列”对象进行操作。 Spark中的列是实际表中该列的占位符。诸如.select()
之类的某些方法可让您将字符串用作快捷方式,例如df.select('year')
等同于df.select(pyspark.sql.functions.col('year'))
。
the first answer是正确的,因为它正确地使用了列占位符,而不是使用字符串。
(我认为这种行为的记录很少。)