让我们为您创建这个PySpark DataFrame。您必须从 functions 模块导入 to_date -
第 0 步: 导入这 4 个函数 -
from pyspark.sql.functions import to_date, date_format, concat, lit
第 1 步:
from pyspark.sql.functions import to_date, date_format, concat, lit
values = [('12/2/2018',),('12/7/2018',)]
df = sqlContext.createDataFrame(values,['scheduled_date_plus_one'])
df = df.withColumn('scheduled_date_plus_one',to_date('scheduled_date_plus_one','MM/dd/yyyy'))
df.printSchema()
root
|-- scheduled_date_plus_one: date (nullable = true)
df.show()
+-----------------------+
|scheduled_date_plus_one|
+-----------------------+
| 2018-12-02|
| 2018-12-07|
+-----------------------+
正如我们在.printSchema() 中看到的,我们有date 格式的日期。因此,作为我们的第一步,我们创建了所需的DataFrame。
第二步:将scheduled_date_plus_one从date格式转换为string格式,这样我们就可以将T02:00:00Z连接到它上面。 date_format 将日期转换为所需格式的字符串。我们拿了yyyy-MM-dd。
df = df.withColumn('scheduled_date_plus_one',date_format('scheduled_date_plus_one',"yyyy-MM-dd"))
df.printSchema()
root
|-- scheduled_date_plus_one: string (nullable = true)
df.show()
+-----------------------+
|scheduled_date_plus_one|
+-----------------------+
| 2018-12-02|
| 2018-12-07|
+-----------------------+
上面的.printSchema()显示scheduled_date_plus_one转换为string格式,现在我们可以做concatenation部分了。
第 3 步: 连接 - 为此,我们使用 concat 函数。注意 - 您必须在 lit() 函数中屏蔽 T02:00:00Z,因为我们没有连接两列。
df = df.withColumn('scheduled_date_plus_one',concat('scheduled_date_plus_one',lit('T02:00:00Z')))
df.show()
+-----------------------+
|scheduled_date_plus_one|
+-----------------------+
| 2018-12-02T02:00:00Z|
| 2018-12-07T02:00:00Z|
+-----------------------+