我是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|
由于我拥有大量数据集,如何以最有效的方式实现这一目标?
答案 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
将一个新列添加到框架,第一个参数作为新列的名称。更多信息here
类似于/否的更多信息,here
这是一个很好的answer,可以进一步了解何时/否则。