用pyspark创建年份列

时间:2018-11-06 13:19:25

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

我有一个timestamp列,我想从此列创建year列。我知道如何显示它,但无法在数据集中创建一列。到目前为止,我已经尝试过:

data = data.withColumn('Year', data.select(year(('Date')))

但是它抛出一个错误:

  

AssertionError:col应该是Column

我能够证明这样做的年份:

data.select(year('Date').alias('Year')).show()

2 个答案:

答案 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是正确的,因为它正确地使用了列占位符,而不是使用字符串。

(我认为这种行为的记录很少。)