我有一个数据集,其中有空单元格,也有只包含空格(一个或多个)的单元格。我想将所有这些单元格转换为Null。
示例数据集:
data = [("", "CA", " "), ("Julia", "", None),("Robert", " ", None), ("Tom", "NJ", " ")]
df = spark.createDataFrame(data,["name", "state", "code"])
df.show()
我可以通过以下方式转换空单元格:
df = df.select( [F.when(F.col(c)=="", None).otherwise(F.col(c)).alias(c) for c in df.columns] )
df.show()
和包含一个空格的单元格:
df = df.select( [F.when(F.col(c)==" ", None).otherwise(F.col(c)).alias(c) for c in df.columns] )
df.show()
但是,我不想对有2个、3个或更多空格的单元格重复上述代码。
有没有办法让我一次转化这些细胞?
2条答案
按热度按时间yzuktlbb1#
在应用
when-otherwise
之前,您可以另外使用trim或regex_replace列修剪
正则表达式替换
x6492ojm2#
您可以使用
trim
删除空格,从而留下 * 空白 *,然后检查所有单元格中的空白。参见下面示例
列表解析将导致每列的
if
表达式语句