如何基于值pyspark

时间:2018-07-09 13:52:12

标签: python pyspark

我是PySpark的新手,在艰苦的工作中有以下任务。我尝试了很少的方法,但是没有一个能正常工作。数据如下:

id|numb_of_count|
1|3|
2|5|
3|6|
4|2|
5|0|
6|15|
7|8|
8|99|

我想获得以下结果:

id|numb_of_count|banding|
1|3|3-5|
2|5|3-5| 
3|6|6-10|
4|2|2|
5|0|0|
6|15|+11|
7|8|6-10|
8|99|+11|

由于我拥有大量数据集,如何以最有效的方式实现这一目标?

1 个答案:

答案 0 :(得分:2)

在pyspark中,when /否则与if / else等效。如果df是您的实际数据帧,则:

new_df = df.withColumn('banding', when(col('numb_of_count') <3,col('numb_of_count')).when(col('numb_of_count') <=5 , '3-5').when(col('numb_of_count') <= 10, '6-10').otherwise('+11'))

df.withColumn

df.withColumn将一个新列添加到框架,第一个参数作为新列的名称。更多信息here

何时/否则

类似于/否的更多信息,here

这是一个很好的answer,可以进一步了解何时/否则。