Соление Pyspark: заменить ноль в столбце случайными отрицательными значениями - PullRequest
1 голос
/ 14 марта 2019

У меня есть много столбцов, для которых я выполняю объединения, в которых иногда могут содержаться миллиарды строк с нулевыми значениями, поэтому я хотел бы подсолить столбцы, чтобы предотвратить перекос после объединения, как упоминалось в сообщении Джейсона Эвана: https://stackoverflow.com/a/43394695

Я не могу найти эквивалентный пример этого в Python, и синтаксис просто настолько отличается, что я не могу понять, как его перевести.

у меня примерно так:

import pyspark.sql.functions as psf
big_neg = -200
for column in key_fields: #key_fields is a list of join keys in the dataframe
    df = df.withColumn(column,
                       psf.when(psf.col(column).isNull(),
                                psf.round(psf.rand().multiply(big_neg))
                      ).otherwise(df[column]))

В настоящее время происходит сбой при синтаксической ошибке:

TypeError: объект 'Column' не вызывается

но я уже пробовал много синтаксических комбинаций, чтобы избавиться от typeError, и я в тупике.

1 Ответ

0 голосов
/ 14 марта 2019

Я действительно смог понять это после перерыва.

Я подумал, что это будет полезно для всех, кто сталкивается с этой проблемой, поэтому я опубликую свое решение:

df = df.withColumn(column, psf.when(df[column].isNull(), psf.round(psf.rand()*(big_neg))).otherwise(df[column]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...