![](/img/trans.png)
[英]Python Spark DataFrame: replace null with SparseVector
[英]Replace null with empty string when writing Spark dataframe
將 spark dataframe 寫入文件時,有沒有辦法用空字符串替換列中的null
值?
樣本數據:
+----------------+------------------+
| 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|
看一下這個。 你可以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()
在這種情況下使用.na.fill()
、 fillna()
函數。
string
列,則df.na.fill('')
將在所有列上將所有null替換為''
。int
列df.na.fill('').na.fill(0)
將null替換為0
dict
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|
#+-------------+----------+
如果列由數組類型組成怎么辦? 我們如何 na.fill 一個數組類型?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.