ben*_*ben 5 python null apache-spark pyspark
null将 Spark 数据帧写入文件时,有没有办法用空字符串替换列中的值?
样本数据:
+----------------+------------------+
| 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|
Run Code Online (Sandbox Code Playgroud)
看一下这个。你可以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| |
# +-------------+----------+
Run Code Online (Sandbox Code Playgroud)
将上述逻辑应用于数据帧的所有列。您可以使用 for 循环并迭代列并在列值为空时填充空字符串。
df.select( *[ F.when(F.col(column).isNull(),'').otherwise(F.col(column)).alias(column) for column in df.columns]).show()
Run Code Online (Sandbox Code Playgroud)
对于这种情况,请使用.na.fill(),函数。fillna()
string列,则将所有列上的df.na.fill('')所有null替换为''。int列,将nulldf.na.fill('').na.fill(0)替换为0dict为列和替换值创建df.fillna({'col1':'replacement_value',...,'col(n)':'replacement_value(n)'})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|
#+-------------+----------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15828 次 |
| 最近记录: |