根据使用另一列的正则表达式提取的内容,有条件地在 spark 数据框中填充新列

我有一个包含 json 文件内容的 spark 数据框。我需要创建一个新列,该列根据另一列的内容有条件地填充。


假设我有一列包含一些数字,我的新列将根据这些数字的值填充(例如:第一列的数字小于 5,我的新列将填充字符串“小于 5” ,如果该值大于 5,则新列将填充“大于 5”。


我知道我可以用 when 函数做这样的事情:


file.withColumn('newcolumn', \

                F.when(file.oldColumn < 5, 'Lower than five') \

                .when(file.oldColumn > 5, 'Greater than five').show()

但是,如果“oldColumn”不仅包含整数,而且包含我需要从中提取整数的字符串,该怎么办:


例如“PT5M”,我需要提取 5,我需要考虑像“PTM”这样的字符串,它不包含数字为 0


到目前为止,我设法使用 regexp_extract 提取了我的第一列的数字,但我正在努力将空值变为 0


示例,其中 1 是原始列,2 是新列:


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

|1      |  2                |

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

|PT5M   |  Lower than five  |   

|PT10M  |  Greater than five|    

|PT11M  |  Greater than five|        

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

谢谢你的帮助!


哈士奇WWW
浏览 175回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python