首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spark将每行中的值转换为新列

使用spark将每行中的值转换为新列
EN

Stack Overflow用户
提问于 2019-04-09 10:23:05
回答 1查看 140关注 0票数 0

我正在使用python中的Spark从XML文件创建数据帧。我想要做的是将每一行中的值转换为新列,并使其成为伪变量。

下面是一个示例。

输入:

代码语言:javascript
复制
 id  |         classes          |
-----+--------------------------+
 132 |  economics,engineering   |
 201 |  engineering             |
 123 |  sociology,philosophy    |
 222 |  philosophy              |
--------------------------------

输出:

代码语言:javascript
复制
 id  | economics | engineering | sociology | philosophy
-----+-----------+-------------+-----------+-----------
 132 |    1      |     1       |      0    |     0
 201 |    0      |     1       |      0    |     0
 123 |    0      |     0       |      1    |     1
 222 |    0      |     0       |      0    |     1
--------------------------------------------------------
EN

回答 1

Stack Overflow用户

发布于 2019-04-09 14:11:10

将列分解为多行引用:Explode in PySpark

代码语言:javascript
复制
import pyspark.sql.functions as F

df = spark.createDataFrame([(132, "economics,engineering"),(201, "engineering"),(123, "sociology,philosophy"),(222, "philosophy")], ["id", "classes"])

+---+--------------------+
| id|             classes|
+---+--------------------+
|132|economics,enginee...|
|201|         engineering|
|123|sociology,philosophy|
|222|          philosophy|
+---+--------------------+


explodeCol = df.select(col("id"), F.explode(F.split(col("classes"), ",")).alias("branch"))
+---+-----------+
| id|     branch|
+---+-----------+
|132|  economics|
|132|engineering|
|201|engineering|
|123|  sociology|
|123| philosophy|
|222| philosophy|
+---+-----------+

explodeCol.groupBy("id").pivot("branch").agg(F.sum(lit(1))).na.fill(0).show()
+---+---------+-----------+----------+---------+
| id|economics|engineering|philosophy|sociology|
+---+---------+-----------+----------+---------+
|222|        0|          0|         1|        0|
|201|        0|          1|         0|        0|
|132|        1|          1|         0|        0|
|123|        0|          0|         1|        1|
+---+---------+-----------+----------+---------+

有关更详细Spark文档,请参阅http://spark.apache.org/docs/2.4.0/api/python/pyspark.sql.html

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55584220

复制
相关文章

相似问题

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