【问题标题】:Check an Empty column in Python检查 Python 中的空列
【发布时间】:2019-02-03 05:14:42
【问题描述】:

我有一个包含 4 列的 spark dataframe

(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,我该如何解决?

【问题讨论】:

  • 您的代码在def 之前是否有空格?与其他流行语言不同,空格和制表符在 Python 中很重要。请确保您发布的内容与您尝试运行的代码相同。
  • @MooingRawr 谢谢我编辑了我的问题。
  • 您希望calculcolumn( ,12) 做什么?这是一个SyntaxError,因为你不能忽略一个论点。你的意思是通过calculcolumn(None, 12)
  • @FHTMitchell 我有一个 spark 数据框
  • @FHTMitchell 我给你举了一个数据框结构的例子,有时col_3之间也是空的||

标签: python dataframe pyspark syntax-error


【解决方案1】:

您收到的是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)

【讨论】:

    【解决方案2】:

    如果您使用的是 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

    【讨论】:

    • 为了清楚起见,您应该在答案中包含; import pyspark.sql.functions as func
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多