从pysparkDataframe中删除单个列中的空值

koaltpgm  于 2021-05-29  发布在  Spark
关注(0)|答案(13)|浏览(465)

我有这样一个PyparkDataframe: `+

egmofgnx

egmofgnx2#

试试这个-用scala编写,但是可以移植到pyspark,只需很少的改动

df.select(map_from_arrays(collect_list("name").as("name"),
      collect_list("value").as("value")).as("map"))
      .select(explode_outer($"map").as(Seq("name", "value")))
      .show(false)

    /**
      * +----+-----+
      * |name|value|
      * +----+-----+
      * |id  |1    |
      * |name|Joe  |
      * |age |47   |
      * |food|pizza|
      * +----+-----+
      */
wnvonmuf

wnvonmuf3#

  • | null| null| | null| null| | null| null| | null| null| | null| null| | null| null| | null| null| | null| null| | null| null| | null| null| | id| null| | name| null| | age| null| | food| null| | null| 1| | null| Joe| | null| 47| | null| pizza| +
chhqkbe1

chhqkbe14#

+我尝试过删除空值df.dropna(how='any'/'all')` 但是,通过分离列并删除空值,很难将它们重新连接在一起。

kyxcudwk

kyxcudwk11#

  • | id| 1| | name| Joe| | age| 47| | food| pizza| +
0yycz8jy

0yycz8jy13#

+我想从每个单独的列中删除空值,这样非空数据就可以排列起来。 所需输出为:+

相关问题