【发布时间】:2018-07-11 18:31:38
【问题描述】:
我有一个包含 3 列的 pyspark 数据框:
ID,每个出现多次; 日期; DELAY,如果该账单按时支付,则为 0,否则为 1。
它已按 ID 和 DATE 排序。 我需要创建一个名为 CONSECUTIVE 的列,用于显示每个 ID 以 DELAY=1 连续支付了多少连续账单。
数据示例和预期结果:
ID | DATE | DELAY | CONSECUTIVE
101 | 1 | 1 | 1
101 | 2 | 1 | 2
101 | 3 | 1 | 3
101 | 4 | 0 | 0
101 | 5 | 1 | 1
101 | 6 | 1 | 2
213 | 1 | 1 | 1
213 | 2 | 1 | 2
有没有办法在不使用 Pandas 的情况下做到这一点?如果是这样,我该怎么做?
【问题讨论】:
-
查看欺骗目标-您正在寻找类似
df.withColumn('CONSECUTIVE', F.sum('DELAY').over(Window.partitionBy('ID').orderBy('DATE').rangeBetween(Window.unboundedPreceding, 0))
标签: dataframe pyspark apache-spark-sql cumulative-sum