【问题标题】:Pyspark equivalent of pandas all fuctionPyspark 相当于 pandas 的所有功能
【发布时间】: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


【解决方案1】:

我没有要测试的东西,但试试下面的代码:

df2 = df.withColumn(
    'E',
    (
        (F.greatest(*df.columns) == F.least(*df.columns)) & 
        (F.least(*df.columns) == F.lit(True))
    ).cast('int')
)

【讨论】:

    猜你喜欢
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 2018-04-21
    • 1970-01-01
    • 2022-08-12
    • 2012-06-18
    • 2023-03-31
    相关资源
    最近更新 更多