如何透视DataFrame?

如何透视DataFrame?

我开始使用SparkDataFrames,我需要能够将数据转到多个行的1列中创建多列。在烫伤中有内置的功能,我相信Python中的Pandas,但是我无法为新的SparkDataframe找到任何东西。

我想我可以写一些自定义函数来实现这一点,但我甚至不知道如何开始,特别是因为我是一个星火新手。我知道如何使用内置的功能或关于如何在Scala中编写东西的建议来完成这一任务,这是非常值得赞赏的。


蝴蝶不菲
浏览 917回答 3
3回答

翻过高山走不出你

通过编写for循环来动态创建SQL查询,我克服了这一点。说我有:id&nbsp;&nbsp;tag&nbsp;&nbsp;value 1&nbsp;&nbsp;&nbsp;US&nbsp;&nbsp;&nbsp;&nbsp;50 1&nbsp;&nbsp;&nbsp;UK&nbsp;&nbsp;&nbsp;&nbsp;100 1&nbsp;&nbsp;&nbsp;Can&nbsp;&nbsp;&nbsp;125 2&nbsp;&nbsp;&nbsp;US&nbsp;&nbsp;&nbsp;&nbsp;75 2&nbsp;&nbsp;&nbsp;UK&nbsp;&nbsp;&nbsp;&nbsp;150 2&nbsp;&nbsp;&nbsp;Can&nbsp;&nbsp;&nbsp;175我想:id&nbsp;&nbsp;US&nbsp;&nbsp;UK&nbsp;&nbsp;&nbsp;Can 1&nbsp;&nbsp;&nbsp;50&nbsp;&nbsp;100&nbsp;&nbsp;125 2&nbsp;&nbsp;&nbsp;75&nbsp;&nbsp;150&nbsp;&nbsp;175我可以创建一个包含我想要枢轴的值的列表,然后创建一个包含我需要的SQL查询的字符串。val&nbsp;countries&nbsp;=&nbsp;List("US",&nbsp;"UK",&nbsp;"Can")val&nbsp;numCountries&nbsp;=&nbsp;countries.length&nbsp;-&nbsp;1var&nbsp;query&nbsp;=&nbsp;"select&nbsp;*,&nbsp;"for&nbsp;(i&nbsp;<-&nbsp;0&nbsp;to&nbsp;numCountries-1)&nbsp;{ &nbsp;&nbsp;query&nbsp;+=&nbsp;"""case&nbsp;when&nbsp;tag&nbsp;=&nbsp;""""&nbsp;+&nbsp;countries(i)&nbsp;+&nbsp;""""&nbsp;then&nbsp;value&nbsp;else&nbsp;0&nbsp;end&nbsp;as&nbsp;"""&nbsp;+&nbsp;countries(i)&nbsp;+&nbsp;",&nbsp;"}query&nbsp;+=&nbsp;"""case&nbsp;when&nbsp;tag&nbsp;=&nbsp;""""&nbsp; &nbsp;&nbsp;+&nbsp;countries.last&nbsp;+&nbsp;""""&nbsp;then&nbsp;value&nbsp;else&nbsp;0&nbsp;end&nbsp;as&nbsp;"""&nbsp;+&nbsp;countries.last&nbsp;+&nbsp;"&nbsp;from&nbsp;myTable"myDataFrame.registerTempTable("myTable")val&nbsp;myDF1&nbsp;=&nbsp; &nbsp;&nbsp;sqlContext.sql(query)我可以创建类似的查询,然后进行聚合。这不是一个非常优雅的解决方案,但它可以工作,并且对于任何值列表都是灵活的,在调用代码时,这些值也可以作为参数传入。
打开App,查看更多内容
随时随地看视频慕课网APP