【问题标题】:How to get the column name which is not null如何获取不为空的列名
【发布时间】:2021-05-20 01:18:26
【问题描述】:

我有一个如下的 Spark 数据框

ID Col A Col B
1 null Some Value
2 Some Value null

我需要添加一个新列,其中包含不为空的列名(在 Col A 和 Col B 之间)。 所以预期的数据框应该是这样的,

ID Col A Col B result
1 null Some Value Col B
2 Some Value null Col A

任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 你能提供一些你试过的代码吗?

标签: apache-spark pyspark apache-spark-sql


【解决方案1】:

从您的数据框创建临时视图后,例如

df.createOrReplaceTempView("my_data")

您可以使用 newdf = sparkSession.sql("query here") 在您的 spark 会话中运行以下命令

SELECT
    ID,
    ColA,
    ColB,
    CASE
        WHEN ColA IS NULL AND ColB IS NULL THEN NULL
        WHEN ColB IS NULL THEN 'ColA'
        WHEN ColA IS NULL THEN 'ColB'
        ELSE 'ColA Col B'
    END AS result
FROM my_data

或者只使用python

from pyspark.sql.functions import when, col

df = df.withColumn("result",when(
    col("Col A").isNull() & col("Col B").isNull() , None
).when(
    col("Col B").isNull() ,'Col A'
).when(
    col("Col A").isNull() ,'Col B'
).otherwise('Col A Col B') 
)

【讨论】:

  • 仅供参考,后两行 WHEN 中不需要 AND
猜你喜欢
  • 2021-06-14
  • 2013-01-27
  • 2012-04-24
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 2014-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多