anu*_*rag 3 python apache-spark apache-spark-sql pyspark
我有一种情况,我想在spark的日期列中添加月份,该日期列DataFrame具有两列的数据类型(Date,Int)
例如
df.show()
Run Code Online (Sandbox Code Playgroud)
df.show()
Run Code Online (Sandbox Code Playgroud)
我想添加一个新列,该列将有一个新日期(向现有日期添加月份之后),输出将如下所示-
data_date months_to_add
2015-06-23 5
2016-07-20 7
Run Code Online (Sandbox Code Playgroud)
我已经尝试了下面的代码,但是它似乎没有用-
df = df.withColumn("new_data_date", a
dd_months(col("data_date"), col("months_to_add")))
Run Code Online (Sandbox Code Playgroud)
它给我错误-
data_date month_to_add new_data_date
2015-06-23 5 2015-11-23
2016-07-20 1 2016-8-20
Run Code Online (Sandbox Code Playgroud)
如果有什么方法可以实现而不在数据框顶部使用SQL查询,请帮助我。
我会用expr:
from pyspark.sql.functions import expr
df = spark.createDataFrame(
[("2015-06-23", 5), ("2016-07-20", 7)],
("data_date", "months_to_add")
).select(to_date("data_date").alias("data_date"), "months_to_add")
df.withColumn("new_data_date", expr("add_months(data_date, months_to_add)")).show()
+----------+-------------+-------------+
| data_date|months_to_add|new_data_date|
+----------+-------------+-------------+
|2015-06-23| 5| 2015-11-23|
|2016-07-20| 7| 2017-02-20|
+----------+-------------+-------------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9630 次 |
| 最近记录: |