我有一个Spark DataFrame,其中有一个where
条件,可以根据某种条件在现有日期列中添加日期数。
我的代码如下所示
F.date_add(df.transDate,
F.when(F.col('txn_dt') == '2016-01-11', 9999).otherwise(10)
)
由于date_add()
函数将第二个参数接受为int
,但是我的代码返回为Column
,因此会引发错误。
如何从有条件的情况下收集价值?
答案 0 :(得分:1)
pyspark.sql.functions.when()
返回一个Column
,这就是您的代码生成TypeError: 'Column' object is not callable
您可以通过将when
移到外面来获得所需的结果,如下所示:
F.when(
F.col('txn_dt') == '2016-01-11',
F.date_add(df.transDate, 9999)
).otherwise(F.date_add(df.transDate, 10))