Динамическое заполнение пустых столбцов в фрейме данных с помощью pyspark - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть ситуация, когда в моем фрейме данных есть 3 столбца, из этих трех столбцов существует вероятность того, что в column3 есть нули.Общее количество записей в этом DF составляет 2 миллиона.Я должен был бы заполнить это нулевые значения через значение из базы данных mysql (в основном вызывая функцию, которая возвращает значение).Я могу думать о циклической обработке каждой строки, но это может занять гораздо больше времени, учитывая объем данных.Как я могу добиться этого, я знаю, как заполнить пустые значения статическим значением, но это полностью динамично.Спасибо за помощь С уважением, Робин

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Для приведенного выше теста я бы обновил столбец значений только для двух строк с помощью команды ниже. test_df.withColumn ("значение", когда (col ("значение"). isNull (), monotonically_increasing_id ()). в противном случае (col ("значение"))). show (truncate = False)

Спасибо за все комментарии и помощь.

0 голосов
/ 10 сентября 2018

Если я правильно понял ваш вопрос, вы хотите, чтобы в столбце было какое-то уникальное значение, если ранее было значение 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: для будущих запросов было бы хорошо, если бы вы могли включить образец из вашего набора данных и желаемого результата. Это часто помогает понять проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...