我正在寻找一种从一个pyspark数据帧添加列的方法,假设这是DF1:
column1 |
---|
123 |
234 |
345 |
窗口函数row_number
和ntile
的组合可能就是答案:
-
在DF1上应用
row_number
以获取枚举为新列id
的所有记录 -
获取DF1中的记录数,并将其存储为
df1_count
-
在DF2上应用
ntile(df1_count)
作为新列id
。Ntile将把DF2行"拆分"为n个尽可能相等的组 -
在新生成的列
id
上加入DF1和DF2以组合两个数据帧
或者,代替ntile(n)
,DF2也可以获得基于row_number()
的列id
,然后可以用于计算mod:
df.withColumn("id_mod", col("id") % lit(df1_count))
然后使用CCD_ 13 将CCD_