gpt4 book ai didi

python - PySpark:如何判断数据框的列类型

转载 作者:行者123 更新时间:2023-12-02 03:09:49 26 4
gpt4 key购买 nike

假设我们有一个名为 df 的数据框。我知道有一种使用 df.dtypes 的方法。不过我更喜欢类似的东西

type(123) == int # note here the int is not a string

我想知道是否有类似的东西:

type(df.select(<column_name>).collect()[0][1]) == IntegerType

基本上我想知道如何直接获取类的对象,如 IntegerType, StringType从数据帧中然后判断它。

谢谢!

最佳答案

TL;DR 使用外部数据类型(纯 Python 类型)来测试值,使用内部数据类型(DataType 子类)来测试架构。

<小时/>

首先也是最重要的 - 你永远不应该使用

type(123) == int

在处理继承的 Python 中检查类型的正确方法是

isinstance(123, int)

完成后,我们来谈谈

Basically I want to know the way to directly get the object of the class like IntegerType, StringType from the dataframe and then judge it.

这不是它的工作原理。 DataTypes 描述模式(内部表示)而不是值。外部类型,是一个普通的Python对象,因此如果内部类型是IntegerType,那么外部类型是int等等,根据Spark SQL Programming guide中定义的规则.

IntegerType(或其他DataTypes)实例存在的唯一位置是您的架构:

from pyspark.sql.types import *

df = spark.createDataFrame([(1, "foo")])

isinstance(df.schema["_1"].dataType, LongType)
# True
isinstance(df.schema["_2"].dataType, StringType)
# True

_1, _2 = df.first()

isinstance(_1, int)
# True
isinstance(_2, str)
# True

关于python - PySpark:如何判断数据框的列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48450352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com