这个问题在这里已经有了答案:
spark sql/pyspark中的unpivot(1个答案)
两个月前关门了。
这是作为作业的一部分给我们的卡格尔难题。我试图使用sparksql将31天的列解压到行中,并意识到使用sparksql是不可能的。
数据框包含以下列: id, item_id, dept_id, cat_id, store_id, state_id and day1 to day 31
.
如何使用Dataframe将31天的列转换为行。有一个基于Pandas的解决方案。但是我怎么能用pyspark呢?
1条答案
按热度按时间ijnw1ujt1#
您可以使用explode函数来完成此操作。首先将所有列日放入一个数组:
使用posexplode函数分解数组,得到每个值的日期:
最后,过滤没有日期的值: