📜  如何验证 Pyspark 数据框列类型?(1)

📅  最后修改于: 2023-12-03 15:24:57.930000             🧑  作者: Mango

如何验证 Pyspark 数据框列类型?

在 Pyspark 中,使用数据框 (DataFrame) 来表示数据是非常常见的。由于 Pyspark 可以处理大规模的数据,数据框的列类型的正确性变得更加重要。本文将介绍如何验证数据框列类型。

方法1:使用 printSchema 方法

DataFrame 类具有 printSchema 方法,可以将数据框的结构以树形结构打印出来,包括每列的名称和类型。以下是一个示例:

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('example').getOrCreate()
data = [('Alice', 1), ('Bob', 2), ('Charlie', 3)]
df = spark.createDataFrame(data, ['name', 'age'])
df.printSchema()

输出结果如下:

root
 |-- name: string (nullable = true)
 |-- age: long (nullable = true)

从输出结果可以看出,第一列的类型为 string,第二列的类型为 long

方法2:使用 dtypes 属性

另一个可以验证数据框列类型的方法是使用 dtypes 属性。这个属性返回的是一个包含元组的列表,其中每个元组包含列名称和列类型。以下是一个示例:

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('example').getOrCreate()
data = [('Alice', 1), ('Bob', 2), ('Charlie', 3)]
df = spark.createDataFrame(data, ['name', 'age'])
print(df.dtypes)

输出结果如下:

[('name', 'string'), ('age', 'bigint')]

从输出结果可以看出,第一列的类型为 string,第二列的类型为 bigint

方法3:使用 getColumnType 方法

DataFrame 中每一列都是一个 Column 对象,通过调用 ColumngetColumnType 方法可以返回该列的类型。以下是一个示例:

from pyspark.sql import SparkSession
from pyspark.sql.functions import col
spark = SparkSession.builder.appName('example').getOrCreate()
data = [('Alice', 1), ('Bob', 2), ('Charlie', 3)]
df = spark.createDataFrame(data, ['name', 'age'])
print(col('name').getColumnType())
print(col('age').getColumnType())

输出结果如下:

StringType
LongType

从输出结果可以看出,第一列的类型为 StringType,第二列的类型为 LongType

总结

使用 printSchema 方法、dtypes 属性或 getColumnType 方法均可以验证数据框中每一列的类型。在实际应用中,可以根据具体情况选择不同的方法。