我试图简化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将不同的单元组合在一起?
使用该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() | |||||
---|---|---|---|---|---|
X | N | A | B | C | D |
1 | 16309 | 0 | 1 | 1 | 0 |
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。