pandas 在pyspark中转换类别类型的数据框列

2uluyalo  于 2023-06-20  发布在  Spark
关注(0)|答案(1)|浏览(158)

我有一个数据框架df,我想在那里将一些列转换为类别类型。使用pandas我可以像下面这样做:

for col in categorical_collist:
        df[col] = df[col].astype('category')

我想在pyspark中进行列转换。我该怎么做?
我在pyspark中使用了下面的代码。但是它在操作过程中没有给出我的预期输出。

from pyspark.sql.types import StringType
for col in categorical_collist:
    df = df.withColumn(col, df[col].cast(StringType()))
kxxlusnw

kxxlusnw1#

在PySpark中,可以使用DataFrame的withColumn()方法将列转换为分类类型。

from pyspark.sql.functions import col

categorical_collist = [...] # list of categorical columns

for col_name in categorical_collist:
    df = df.withColumn(col_name, col(col_name).cast("string").cast("category"))

我们首先从pyspark.sql.functions导入col()函数,它用于通过名称引用列。
然后,我们循环categorical_collist中的列名列表,对于每一列,我们使用withColumn()方法创建一个同名的新列,但先转换为字符串,然后转换为分类类型。
注意,在PySpark中,在转换为分类类型之前,需要先转换为字符串,因为cast()方法需要字符串作为输入。

相关问题