检查Python中的空列

时间:2018-08-28 14:17:43

标签: python dataframe pyspark syntax-error

我有一个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

在测试第3列和第4列之后,我想返回仅包含3列的新dataframe

如果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 :(得分:2)

您得到一个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)

答案 1 :(得分:0)

如果您使用的是pyspark数据框,则应该使用本机的pyspark函数。要解决您的问题,您可以执行以下操作根据col3是否为None创建新列:

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

此函数将创建一个新列,如果col3为null,将使用col4,否则将使用col3