pyspark数据框,其中包含一系列数字变量。
例如
我的数据框的列值为1到100。
1-10-group1 <== 1到10的列值应包含group1作为值 11-20-第2组 。 。 。 91-100组10
如何使用pyspark数据框实现这一目标
答案 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|
+---+-------+