【发布时间】:2020-12-16 13:13:58
【问题描述】:
我有一个 spark 数据框 df:
A B C D
True True True True
True False True True
True None True None
True NaN NaN False
True NaN True True
在 pyspark 中有没有办法根据行 A、B、C、D 获得第五列,其中没有值 False,但返回一个 int 值或 1 表示 True,0 表示 false。因此:
A B C D E
True True True True 1
True False True True 0
True None True None 1
True NaN NaN False 0
True NaN True True 1
这可以通过函数 df.all().astype(int) 在 pandas 数据帧中实现。
对于 pyspark 等价物的任何帮助将不胜感激。
【问题讨论】:
-
布尔列不能在 spark 中包含 NaN。你能发布一个创建你的数据框的示例代码吗?
-
感谢您的评论。数据框值都是假的。假设所有 None 和 NaN 值都为真,您能否提出一个解决方案?非常感谢
-
这本质上是stackoverflow.com/a/63634987/5858851 的副本——只需使用reduce 中的所有列。
df.withColumn("E", reduce(or_, [col(c) for c in df.columns]).cast('int'))
标签: python pandas apache-spark pyspark apache-spark-sql