Я хочу сделать цикл для номеров строк разделов в кадре данных, чтобы проверить условия и создать дополнительные столбцы в зависимости от результата текущего номера строки.
Итак, у меня есть кадр данных, представляющий контакты с главным идентификатором <-> ассоциация необработанных идентификаторов (мастер может иметь несколько необработанных).Я разделил этот фрейм данных с оконной функцией и row_number () над разделом самых последних созданных строк:
# Create a window specification to define the partitionning of masters
# base on the most recent created
window_spec = Window \
.partitionBy(raw_df.master_id) \
.orderBy(raw_df.created.desc())
# Create a dataframe with a row number for each partition to process
# raws grouped with their master from the most recent to the least
partionned_df = raw_df \
.select(
fields + [
F.row_number().over(window_spec).alias('row_nb')
]
) \
.orderBy(['master_id', 'row_nb'])
Это мой фрейм данных:
partionned_df.show()
+------+---+---------------+---------+------------+-------------+------+
|master|raw| created|last_name|mobile_phone|norm_civility|row_nb|
+------+---+---------------+---------+------------+-------------+------+
| 1| 3|02-05 11:22:...| null| 641203047| null| 1|
| 1| 5|02-05 11:22:...| null| null| monsieur| 2|
| 1| 6|02-05 11:22:...| null| null| null| 3|
| 1| 1|02-05 10:29:...| name1| null| mr| 4|
| 3| 11|02-05 11:26:...| null| null| monsieur| 1|
| 3| 4|02-05 10:30:...| null| 630254175| null| 2|
| 5| 15|02-05 11:35:...| null| null| null| 1|
| 5| 13|02-05 11:35:...| null| null| null| 2|
| 5| 14|02-05 11:33:...| name3 | null| monsieur| 3|
| 5| 7|02-05 11:22:...| null| null| null| 4|
+---+------+---------------+---------+------------+-------------+------+
Что я хочу создатьновый фрейм данных только с разными мастерами и новыми столбцами после итерации по номеру строки каждого раздела и выполнения некоторых условий (например, если first_name не равно NULL и т. д.), и если условия не проверены в первом row_nb раздела, проверьтедругой и т. д., пока я не зациклю на каждом номере строки раздела.
Конечный кадр данных, который я хочу, выглядит примерно так:
+------+---------+------------+-------------+
|master|last_name|mobile_phone|norm_civility|
+------+---------+------------+-------------+
| 1| name1| 641203047| monsieur |
| 3| null| 630254175| monsieur |
| 5| name3| null| monsieur |
+------+---------+------------+-------------+
Большое спасибо за вашу помощь заранее.