这是涉及单个枢轴的非UDF方法(因此,只需进行一次列扫描即可识别所有唯一日期)。
dff = mydf.groupBy('id').pivot('day').agg(F.first('price').alias('price'),F.first('units').alias('unit'))
+---+-------+------+-------+------+-------+------+-------+------+ | id|1_price|1_unit|2_price|2_unit|3_price|3_unit|4_price|4_unit|+---+-------+------+-------+------+-------+------+-------+------+|100| 23| 10| 45| 11| 67| 12| 78| 13||101| 23| 10| 45| 13| 67| 14| 78| 15||102| 23| 10| 45| 11| 67| 16| 78| 18|+---+-------+------+-------+------+-------+------+-------+------+
经过一天的调整后,我们只在
price和
unit列上进行汇总。
如果需要命名,
dff.select([F.col(c).name('_'.join(x for x in c.split('_')[::-1])) for c in dff.columns]).show()+---+-------+------+-------+------+-------+------+-------+------+| id|price_1|unit_1|price_2|unit_2|price_3|unit_3|price_4|unit_4|+---+-------+------+-------+------+-------+------+-------+------+|100| 23| 10| 45| 11| 67| 12| 78| 13||101| 23| 10| 45| 13| 67| 14| 78| 15||102| 23| 10| 45| 11| 67| 16| 78| 18|+---+-------+------+-------+------+-------+------+-------+------+
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)