Если я правильно понял ваш вопрос, вы хотите, чтобы в столбце было какое-то уникальное значение, если ранее было значение Null
. Одним из возможных методов будет следующий код, который проверяет значения Null
в столбце value
. Если он находит Null
, он будет использовать идентификатор monotonically_increasing для замены Null
. В другом случае исходное значение останется.
test_df = spark.createDataFrame([
('a','2018'),
('b',None),
('c',None)
], ("col_name","value"))
test_df.withColumn("col3", when(col("value").isNull(), row_number()).otherwise(col("value"))).show(truncate=False)
Результат:
+--------+-----+------------+
|col_name|value|col3 |
+--------+-----+------------+
|a |2018 |2018 |
|b |null |403726925824|
|c |null |609885356032|
+--------+-----+------------+
PS: для будущих запросов было бы хорошо, если бы вы могли включить образец из вашего набора данных и желаемого результата. Это часто помогает понять проблему.