在写入sparkDataframe时用空字符串替换null

gblwokeq  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(648)

有没有一种方法 null 将sparkDataframe写入文件时是否替换为空字符串?
样本数据:

+----------------+------------------+
|   UNIQUE_MEM_ID|              DATE|
+----------------+------------------+
|            1156|              null|
|            3787|        2016-07-05|
|            1156|              null|
|            5064|              null|
|            5832|              null|
|            3787|              null|
|            5506|              null|
|            7538|              null|
|            7436|              null|
|            5091|              null|
|            8673|              null|
|            2631|              null|
|            8561|              null|
|            3516|              null|
|            1156|              null|
|            5832|              null|
|            2631|        2016-07-07|
tez616oj

tez616oj1#

使用其中一个 .na.fill() , fillna() 本案例的功能。 Example: ```
df.show()

+-------------+----------+

|UNIQUE_MEM_ID| DATE|

+-------------+----------+

| 1156| null|

| 3787| null|

| 2631|2016007-07|

+-------------+----------+

from pyspark.sql.functions import *

df.na.fill('').show()
df.fillna({'DATE':''}).show()

+-------------+----------+

|UNIQUE_MEM_ID| DATE|

+-------------+----------+

| 1156| |

| 3787| |

| 2631|2016007-07|

+-------------+----------+

fdx2calv

fdx2calv2#

看看这个。你可以 when 以及 otherwise .

df.show()

    #InputDF
    # +-------------+----------+
    # |UNIQUE_MEM_ID|      DATE|
    # +-------------+----------+
    # |         1156|      null|
    # |         3787|2016-07-05|
    # |         1156|      null|
    # +-------------+----------+

    df.withColumn("DATE", F.when(F.col("DATE").isNull(), '').otherwise(F.col("DATE"))).show()

    #OUTPUTDF
    # +-------------+----------+
    # |UNIQUE_MEM_ID|      DATE|
    # +-------------+----------+
    # |         1156|          |
    # |         3787|2016-07-05|
    # |         1156|          |
    # +-------------+----------+

将上述逻辑应用于dataframe的所有列。可以使用for循环和遍历列,并在列值为null时填充空字符串。

df.select( *[ F.when(F.col(column).isNull(),'').otherwise(F.col(column)).alias(column) for column in df.columns]).show()

相关问题