首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何转换星火数据,使我的值成为列名?

如何转换星火数据,使我的值成为列名?
EN

Stack Overflow用户
提问于 2018-03-02 05:16:59
回答 1查看 270关注 0票数 2

我不确定用什么好的方式表达这个问题,但举一个例子会有帮助。下面是我对列的数据格式: name、type和count:

代码语言:javascript
运行
复制
+------+------+-------+
| Name | Type | Count |
+------+------+-------+
| a    |    0 |     5 |
| a    |    1 |     4 |
| a    |    5 |     5 |
| a    |    4 |     5 |
| a    |    2 |     1 |
| b    |    0 |     2 |
| b    |    1 |     4 |
| b    |    3 |     5 |
| b    |    4 |     5 |
| b    |    2 |     1 |
| c    |    0 |     5 |
| c    |  ... |   ... |
+------+------+-------+

我希望得到一个新的数据格式,在这种结构中,Type列值已经变成了新列:

代码语言:javascript
运行
复制
+------+---+-----+---+---+---+---+
| Name | 0 |  1  | 2 | 3 | 4 | 5 |  <- Number columns are types from input
+------+---+-----+---+---+---+---+
| a    | 5 |   4 | 1 | 0 | 5 | 5 |
| b    | 2 |   4 | 1 | 5 | 5 | 0 |
| c    | 5 | ... |   |   |   |   |
+------+---+-----+---+---+---+---+

这里的列是名称,0,1,2,3,4,5。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-02 05:35:55

这是通过使用星火中的pivot函数来实现的。

代码语言:javascript
运行
复制
val df2 = df.groupBy("Name").pivot("Type").sum("Count")

在这里,如果两行的名称和类型是相同的,那么简单地将计数值相加在一起,但是其他聚合也是可能的。

在问题中使用示例数据时产生的数据:

代码语言:javascript
运行
复制
+----+---+----+----+----+----+----+
|Name|  0|   1|   2|   3|   4|   5|
+----+---+----+----+----+----+----+
|   c|  5|null|null|null|null|null|
|   b|  2|   4|   1|   5|   5|null|
|   a|  5|   4|   1|null|   5|   5|
+----+---+----+----+----+----+----+
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49063212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档