首页 > 解决方案 > 尝试使用具有多个条件的 pyspark 创建新列

问题描述

我有一个数据集,在那个数据集中我有 X 和 Y 列

我想制作一个具有唯一 Y 列值的计数值的 Z 列。但它必须在每行的 X 时间列之前计算。

示例数据集:

X
2021-09-08 1号
2021-09-09 2号
2021-09-10 2号
2021-09-11 编号3
2021-09-12 2号
2021-09-13 2号
2021-09-14 编号3

示例结果数据集:

X Z
2021-09-08 1号 0
2021-09-09 2号 0
2021-09-10 2号 1
2021-09-11 编号3 0
2021-09-12 2号 2
2021-09-13 2号 3
2021-09-14 编号3 1

注意:X 列未在原始数据集上排序,我不想对 X 列进行排序。

标签: pythonpyspark

解决方案


你可以这样做row_number

from pyspark.sql import functions as F, Window

df.withColumn(
    "z",
    F.row_number().over(Window.partitionBy("y").orderBy("x")) - 1
).show()

推荐阅读