如果我从 CSV 读取数据,默认情况下所有列都是“字符串”类型。通常,我使用以下函数检查数据,这些函数概述了数据及其类型
df.dtypes
df.show()
df.printSchema()
df.distinct().count()
df.describe().show()
但是,如果有一个我认为是特定类型的列,例如 Double,如果我没有业务知识,我无法确定所有值是否都是双倍的,因为
- 我看不到所有值(数百万个唯一值)
- 如果我将其显式转换为 double 类型,spark 会悄悄地转换类型而不抛出任何异常,并且非 double 的值将转换为“null” - 例如
代码:
from pyspark.sql.types import DoubleType
changedTypedf = df_original.withColumn('label', df_control_trip['id'].cast(DoubleType()))
那么确认列类型的最佳方法是什么?