当前位置: 首页 > 知识库问答 >
问题:

PySpark SQL try_cast?

林修真
2023-03-14

我在Dataframe中有数据,所有列都是字符串。现在,列中的一些数据是数值的,所以我可以强制转换为浮动。其他行实际上包含我不想强制转换的字符串

casted = data.select(when(col("Value").cast("float").isNotNull(), col("Value").cast("float")).otherwise(col("Value")))

像这样的事情通常是可能的(在没有UDF等的情况下以一种性能方式)吗?

共有1个答案

洪浩波
2023-03-14

在Spark中不能有两种类型的列:float或string。这就是为什么您的列总是具有string类型(因为它可以同时包含:string和floats)。

您的代码所做的是:如果value列中的数字不适合float,它将被强制执行float,然后被强制执行string(尝试使用>6位小数)。据我所知,TRY_CAST转换为value或null(至少在SQL Server中是这样),所以这正是Spark的cast所做的。

 类似资料:

相关问答

相关文章

相关阅读