在 Spark 数据框中添加截止日期列

新手上路,请多包涵

我有一个场景,我想在 spark DataFrame 的日期列中添加月份,它有两列数据类型(日期,整数)

例如

df.show()

 data_date months_to_add
2015-06-23 5
2016-07-20 7

我想添加一个有新日期的新列(在现有日期上添加几个月后),输出如下所示 -

 data_date month_to_add new_data_date
2015-06-23 5           2015-11-23
2016-07-20 1           2016-8-20

我试过下面的一段代码,但它似乎没有用——

 df = df.withColumn("new_data_date", a
  dd_months(col("data_date"), col("months_to_add")))

它给了我错误-

 'Column' object is not callable

如果有任何方法可以在不在数据框之上使用 SQL 查询的情况下实现这一点,请帮助我。

原文由 anurag 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 673
1 个回答

我会使用 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|
+----------+-------------+-------------+

原文由 Alper t. Turker 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题