虽然问题是基于连续行的两个或多个列的值创建多个组,但我只是通过这种方式简化问题。假设有这样的 pyspark 数据框
>>> df=sqlContext.createDataFrame([
... Row(SN=1,age=45, gender='M', name='Bob'),
... Row(SN=2,age=28, gender='M', name='Albert'),
... Row(SN=3,age=33, gender='F', name='Laura'),
... Row(SN=4,age=43, gender='F', name='Gloria'),
... Row(SN=5,age=18, gender='T', name='Simone'),
... Row(SN=6,age=45, gender='M', name='Alax'),
... Row(SN=7,age=28, gender='M', name='Robert')])
>>> df.show()
+---+---+------+------+
| SN|age|gender| name|
+---+---+------+------+
| 1| 45| M| Bob|
| 2| 28| M|Albert|
| 3| 33| F| Laura|
| 4| 43| F|Gloria|
| 5| 18| T|Simone|
| 6| 45| M| Alax|
| 7| 28| M|Robert|
+---+---+------+------+
现在我想添加“部分”列,如果连续行中的性别值匹配,并且下一行部分值中的性别更改增加,则该列将具有相同的值。所以准确地说,我想要这样的输出
+---+---+------+------+-------+
| SN|age|gender| name|section|
+---+---+------+------+-------+
| 1| 45| M| Bob| 1|
| 2| 28| M|Albert| 1|
| 3| 33| F| Laura| 2|
| 4| 43| F|Gloria| 2|
| 5| 18| T|Simone| 3|
| 6| 45| M| Alax| 4|
| 7| 28| M|Robert| 4|
+---+---+------+------+-------+