我正在处理一些数据,在这里我需要运行多个条件,如果这些条件匹配,那么我想计算pyspark中新列的值。感谢您在这方面能帮助我。
block2.withColumn("Duration", when((col("START_TS")== col("REP_WORK_DAY_TS")) & ((col("END_TS")== col("REP_WORK_DAY_TS")),(unix_timestamp("END_TIME") - unix_timestamp("START_TIME"))))).show(5)
例如,在上面的代码中,我应用了两个条件,然后想计算从开始到结束的时间戳差异。由于某种原因,我收到一个错误,提示“ TypeError:列不可迭代”。
答案 0 :(得分:1)
您的括号有问题。
block2.withColumn(
"Duration",
when(
( col("START_TS") == col("REP_WORK_DAY_TS") )
& ( col("END_TS") == col("REP_WORK_DAY_TS") ),
(unix_timestamp("END_TIME") - unix_timestamp("START_TIME"))
)
).show(5)