为了账号安全,请及时绑定邮箱和手机立即绑定

如何透视DataFrame?

如何透视DataFrame?

蝴蝶不菲 2019-06-03 15:12:57
如何透视DataFrame?我开始使用SparkDataFrames,我需要能够将数据转到多个行的1列中创建多列。在烫伤中有内置的功能,我相信Python中的Pandas,但是我无法为新的SparkDataframe找到任何东西。我想我可以写一些自定义函数来实现这一点,但我甚至不知道如何开始,特别是因为我是一个星火新手。我知道如何使用内置的功能或关于如何在Scala中编写东西的建议来完成这一任务,这是非常值得赞赏的。
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

通过编写for循环来动态创建SQL查询,我克服了这一点。说我有:

id  tag  value
1   US    50
1   UK    100
1   Can   125
2   US    75
2   UK    150
2   Can   175

我想:

id  US  UK   Can
1   50  100  125
2   75  150  175

我可以创建一个包含我想要枢轴的值的列表,然后创建一个包含我需要的SQL查询的字符串。

val countries = List("US", "UK", "Can")val numCountries = countries.length - 1var query = "select *, "for (i <- 0 to numCountries-1) {
  query += """case when tag = """" + countries(i) + """" then value else 0 end as """ + countries(i) + ", "}query += """case when tag = """" 
  + countries.last + """" then value else 0 end as """ + countries.last + " from myTable"myDataFrame.registerTempTable("myTable")val myDF1 = 
  sqlContext.sql(query)

我可以创建类似的查询,然后进行聚合。这不是一个非常优雅的解决方案,但它可以工作,并且对于任何值列表都是灵活的,在调用代码时,这些值也可以作为参数传入。


查看完整回答
反对 回复 2019-06-03
  • 3 回答
  • 0 关注
  • 910 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信