【发布时间】:2019-02-19 09:17:23
【问题描述】:
您好,我有一个 PySpark 数据框。所以,我想在特殊条件下添加来自不同行的两列。其中一列是日期类型。
以下是数据示例:
--------------------------------
| flag| date | diff |
--------------------------------
| 1 | 2014-05-31 | 0 |
--------------------------------
| 2 | 2014-06-02 | 2 |
--------------------------------
| 3 | 2016-01-14 | 591 |
--------------------------------
| 1 | 2016-07-08 | 0 |
--------------------------------
| 2 | 2016-07-12 | 4 |
--------------------------------
目前我只知道如何使用以下代码添加两列:
from pyspark.sql.functions import expr
dataframe.withColumn("new_column", expr("date_add(date_column, int_column)"))
预期结果:
有一个名为“new_date”的新列,它是通过将“diff”列添加到“date column”的结果。
问题是有一个特殊条件:如果“flag”为 1,“date”和“diff”来自同一行,如果不是,“date”来自上一行.
我知道在这种情况下,我的数据必须正确排序。
如果有人可以帮助我,我将不胜感激。谢谢。
【问题讨论】:
-
flag为1时diff是否总是0?
-
@gaw 很遗憾没有
-
第一行应该发生什么?没有之前的日期,如果
flag设置为1,是否应该将diff添加到之前的日期?或者应该只是上一个日期在new_date列中 -
@gaw 第一行的 "flag" 值始终为 1。如果 "flag" 值为 1,则添加的 "date" 和 "diff" 来自同一行。为了清楚起见,“flag”意味着像第 n 次使用。
标签: python apache-spark dataframe pyspark databricks