Проверьте пустой столбец в Python - PullRequest
0 голосов
/ 28 августа 2018

У меня есть spark dataframe, который содержит 4 столбца:

(col_1, col_2, col_3, col_4) ==> (String, String, Int, Int)

В данных иногда col_3 пусто, например:

 col_1|col_2|col_3|col_4
 col_1|col_2||col_4

Я хочу вернуть новый dataframe, содержащий всего 3 столбца, после тестирования столбцов 3 и 4:

если col_3 пусто, вернуть col_4 еще возврат col_3

Чтобы решить это, я сделал это:

>>>
>>> def calculcolumn(col_3, col_4):
...     if (col_3 is None ):
...             return col_4
...     else:
...             return col_3
...
>>>
>>> calculcolumn( ,12)
  File "<stdin>", line 1
    calculcolumn( ,12)
                  ^
SyntaxError: invalid syntax
>>>

Но выдает SyntaxError, как я могу решить это?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Если вы используете pyspark фрейм данных, вы должны использовать собственные функции pyspark. Чтобы решить вашу проблему, вы можете сделать следующее, чтобы создать новый столбец в зависимости от того, является ли col3 None:

df = df.withColumn('new_col', func.when(func.col("col3").isNull(), func.col("col4")).otherwise(func.col("col3"))

Эта функция создаст новый столбец, в котором, если col3 равно нулю, будет использоваться col4, в противном случае будет использоваться col3.

0 голосов
/ 28 августа 2018

Вы получаете SyntaxError, потому что это синтаксическая ошибка.
Вы также должны передать первый аргумент.

def calculcolumn(col_3, col_4):
    if (col_3 is None ):
        return col_4
    else:
        return col_3

calculcolumn(None, 12)

Вы также можете использовать kwargs и сделать это:

def calculcolumn(col_3=None, col_4=None):
    if (col_3 is None ):
        return col_4
    else:
        return col_3

calculcolumn(col_4=12)
...