开发者社区> 问答> 正文

Apache Spark:根据条件将不同的行分组在一起

我试图简化Apache Spark(Python)中的数据帧。

我有这样的数据帧

person X N A B C D
NCC1701 1 16309 false true false false
NCC1864 1 16309 false false true false
...
我想对每一行的X和N进行分组,比如groupBy('X','N'),但是我想得到每列AD出现频率的计数,比如false = 0和true = 1所以我得到了像这样的结果

X N A B C D
1 16309 0 1 1 0
简而言之,我试图将X和N列组合在一起,并为每对X和N得到每个“真”和“假”的总和。如果'true'和'false'是精确的数字,我可能知道如何要做到这一点,但我不知道如何将'true'设为1,将'false'设为0,然后获得总和。

如何为每个X和N将不同的单元组合在一起?

展开
收起
社区小助手 2018-12-06 11:54:03 1878 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    使用该cast方法将数据类型从布尔值转换为整数,然后执行以下操作sum:

    import pyspark.sql.functions as f
    cols = ['A', 'B', 'C', 'D']

    df.groupBy('X', 'N').agg(*(f.sum(f.col(x).cast('int')).alias(x) for x in cols)).show()
    XNABCD
    1163090110
    2019-07-17 23:18:30
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Flink技术进阶 立即下载
Apache Spark: Cloud and On-Prem 立即下载
Hybrid Cloud and Apache Spark 立即下载

相关镜像