У меня есть фрейм данных, подобный следующему:
df = spark.createDataFrame([(0, "departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Pink","departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Blue"), (1, "departmentcode__10~#~p99189h8pk0__10484~#~prod_productcolor__Dustysalmon Black","departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Blue"), (2, "departmentcode__60~#~p99189h8pk0__10485~#~prod_productcolor__Dustysalmon White","departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Blue"), (3, "departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Blue","departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Pink")], ["id", "left", "right"])
Мне нужно создать новый фрейм данных, подобный следующему:
Здесь для идентификаторов 0 и 3 слева и справа поменялись местами,в этом случае мне нужно создать новый столбец с именем new_id, где new_id - альтернативный идентификатор.(для идентификатора 0 это 3, а для идентификатора 3 new_id равно 0. для остальных это нулевое значение (если совпадение не найдено))
------------------+
|id |left|right |new_id
-+-----------------------------------------------------------------------------+
|0 |departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Pink |departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Blue|3
|1 |departmentcode__10~#~p99189h8pk0__10484~#~prod_productcolor__Dustysalmon Black|departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Blue|null
|2 |departmentcode__60~#~p99189h8pk0__10485~#~prod_productcolor__Dustysalmon White|departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Blue|null
|3 |departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Blue |departmentcode__50~#~p99189h8pk0__10483~#~prod_productcolor__Dustysalmon Pink|0