首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PySpark布尔型透视

PySpark布尔型透视
EN

Stack Overflow用户
提问于 2018-06-08 04:19:05
回答 1查看 1.3K关注 0票数 5

我有一些模拟以下结构的数据:

代码语言:javascript
复制
rdd = sc.parallelize(
    [
        (0,1), 
        (0,5), 
        (0,3), 
        (1,2), 
        (1,3), 
        (2,6)
    ]
)

df_data = sqlContext.createDataFrame(rdd, ["group","value"])

df_data.show()

+-----+-----+
|group|value|
+-----+-----+
|    0|    1|
|    0|    5|
|    0|    3|
|    1|    2|
|    1|    3|
|    2|    6|
+-----+-----+

我想要做的是按组透视此数据,以显示'value‘值的存在,如下所示:

代码语言:javascript
复制
+-----+-------+-------+-------+-------+-------+
|group|value_1|value_2|value_3|value_5|value_6|
+-----+-------+-------+-------+-------+-------+
|    0|   true|  false|   true|   true|  false|
|    1|  false|   true|   true|  false|  false|
|    2|  false|  false|  false|  false|   true|
+-----+-------+-------+-------+-------+-------+

有没有什么办法可以用PySpark实现这一点?

我尝试了groupby/pivot/agg的组合,但没有成功。

EN

回答 1

Stack Overflow用户

发布于 2018-06-08 04:34:56

这里有一种方法:

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

(df_data.withColumn('value', F.concat(F.lit('value_'), df_data.value))
        .groupBy('group').pivot('value').agg(F.count('*').isNotNull())
        .na.fill(False).show())

+-----+-------+-------+-------+-------+-------+
|group|value_1|value_2|value_3|value_5|value_6|
+-----+-------+-------+-------+-------+-------+
|    0|   true|  false|   true|   true|  false|
|    1|  false|   true|   true|  false|  false|
|    2|  false|  false|  false|  false|   true|
+-----+-------+-------+-------+-------+-------+
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50749596

复制
相关文章

相似问题

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