根据pyspark中的分区列生成重复行号

Generate repeating row number based on partition column in pyspark

我想生成如下所示的季度列,即在每个 l_id 数字的每 4 条记录之后应该在 pyspark 中更改。在生成季度列之前,将根据 l_id 和周列排序数据。

糟糕,我在想你的数据框中已经有一个季度列,但你似乎需要一个看起来像季度的列。我不认为通过 Window 函数可以做到这一点,但这里有一种方法可以实现这一点:

假设您当前的数据在 df 中。

from pyspark.sql.functions import split

split_col = split(df["week"],'month')
df = df.withColumn("quaterly", (split_col.getItem(1).cast("integer")/(df["sequence_change"] + lit(1))).cast("integer") + lit(1)).orderBy("l_id","week")

逻辑解释: 我们将从 week 列值中获取月份编号,将其从字符串中转换为整数并将其除以 sequence_change value + 1 并将最终值转换为整数,这样您就可以获得整数值它没有小数点。最后在其中添加 1,以便 quaterly 列以 1 而不是 0 开头。