【发布时间】:2020-09-22 03:10:18
【问题描述】:
这是我原始数据框df的示例
+----+
| mix|
+----+
| 1|
| 2|
| cap|
| 3|
| 53|
| 56|
| 98|
| 90|
+----+
列的当前数据类型为StringType
将值 cap 替换为 0 后,可能有两种情况
- 列没有更多的字符串值,所以现在所有值都是数字
- 列有其他字符串值,所以它将保持
StringType
如何再次推断数据类型,以便我可以知道替换后列是否为纯数字。如果Numerical,确切的数据类型是Integer,Float,Double
df.withColumn("mix",when(col("mix") === "cap",0).otherwise(col("mix")))
【问题讨论】:
-
使用rlike判断每一列是否只包含数字。
-
@Nick 这个函数在 scala spark 中是否可用
-
是的,它是在 Column 上定义的。
-
rlike会告诉我所有值是否都是数字,但它不会告诉我更新列的确切数据类型,例如Integer、FloatDouble相应地更新了问题跨度> -
为什么不能用rlike来做呢?您可以检测小数点。不要打扰浮点数,只需使用双精度即可。
标签: scala dataframe apache-spark apache-spark-sql