我是Pyspark 3.0新手,我有一个家庭作业,需要将字符串(geolocation
)更改为元组数字数据类型(geolocation1
)
这是我的密码:
from pyspark.sql.functions import *
from pyspark.sql.types import *
df = df2.withColumn('geolocation1', col('geolocation').cast('double'))
输出:
|地理定位|地理定位1 |
|---------------------------------------------------------------------------------------------------\br/>
|(-37.80899950140.96004459)|空|
|(-37.80899952140.96004451)|空|
我做错了什么
在回答这个问题之前,我想提出一些建议
首先,您需要了解什么是双重类型。在这里,您盲目地将包含非数字字符的字符串转换为数字格式。因此,内部spark将抛出一个异常,该异常将被捕获,null将作为输出填充
正如我从field的名字所理解的,它是一个地理位置,是纬度和经度的组合。所以我假设给你这个作业的人需要这两个值作为新的列。如果我的假设是正确的,下面是实现它的方法之一
如果有这样的字符串,可以删除括号并用逗号分隔,然后强制转换为
array<double>
:相关问题 更多 >
编程相关推荐