如何使用pyspark将数值转换为分类变量

时间:2019-04-10 12:26:10

标签: pyspark

pyspark数据框,其中包含一系列数字变量。

例如

我的数据框的列值为1到100。

1-10-group1 <== 1到10的列值应包含group1作为值 11-20-第2组 。 。 。 91-100组10

如何使用pyspark数据框实现这一目标

1 个答案:

答案 0 :(得分:0)

# Creating an arbitrary DataFrame
df = spark.createDataFrame([(1,54),(2,7),(3,72),(4,99)], ['ID','Var'])
df.show()
+---+---+
| ID|Var|
+---+---+
|  1| 54|
|  2|  7|
|  3| 72|
|  4| 99|
+---+---+

创建DataFrame后,我们将使用floor()函数来查找数字的整数部分。例如floor(15.5)将是15。我们需要找到Var/10的整数部分并添加1,因为索引从1开始而不是0。最后,我们需要在group前面加上值。可以使用concat()函数来实现串联,但是请记住,由于前置单词group不是一列,因此我们需要将其放在lit()内,以创建文字列值。

# Requisite packages needed
from pyspark.sql.functions import col, floor, lit, concat
df = df.withColumn('Var',concat(lit('group'),(1+floor(col('Var')/10))))
df.show()
+---+-------+
| ID|    Var|
+---+-------+
|  1| group6|
|  2| group1|
|  3| group8|
|  4|group10|
+---+-------+