假设你有一个看起来像下面这样的dataframe:
| 列A|列B|列C|列D|
| --|--|--|--|
| 'test1'| 7 |['','hi ','']|['','',0]|
| “的一声| 14 |['','',6,'']|[98,0,'',9]|
有没有办法用None/null替换数组列(C和D)中的所有空字符串?它最终看起来像下面这样:
| 列A|列B|列C|列D|
| --|--|--|--|
| 'test1'| 7 |[嗨,嗨,嗨]|[Null,Null,0]|
| Null| 14 |[Null,Null,6,Null]|[98,0,Null,9]|
关键是我需要在每个数组中保留位置值,但我希望数组中有Null值而不是空字符串。
我已经能够使用以下代码将非数组的列转换为None:
df=df.select([F.when(F.col(c)=="",None).otherwise(F.col(c)).alias(c) for c in df.columns])
我在这里查看了databricks文档中的数组函数:https://docs.databricks.com/en/sql/language-manual/sql-ref-functions-builtin-alpha.html
使用array_remove()我可以删除数组中的所有空字符串,但同样的挑战是我需要用Null值保留每个数组的位置值。我不能只删除字符串而不替换值。有没有办法做到这一点?
1条答案
按热度按时间nzk0hqpo1#
你可以简单地使用
transform
函数对数组的每个元素应用spark转换: