0

我有一个数据框,我正在尝试根据现有列的值创建一个新列:

dfg = dfg.withColumn("min_time",
    F.when(dfg['list'].isin(["A","B"]),dfg['b_time'])
     .when(dfg['list']=="C",dfg['b_time'] +2)
     .when(dfg['list']=="D",F.when(dfg['b_time']==0,lit(10)).otherwise(2*dfg['b_time'])).when(dfg['list'].isin(['E','F']),dfg['b_time']).when(dfg['list'].isin(["A","B","C","D",'E','F'])==False,lit('unknown category'))
     .otherwise('unknown'))

我想在最后一个 .when 条件中实现的是,如果列 dfg['list'] 值不属于列表中的元素之一 = ["A","B","C","D" ,'E','F'],我想用一条消息引发运行时错误。不确定如何在 pyspark 中执行此操作。此外,如果我基于条件语句创建列,即 .when 和 .otherwise,如何使用 try except 块。

我正在使用 pyspark 1.6。任何帮助深表感谢。

4

1 回答 1

0

这不是要走的路。构建控制流既针对 SQL 模型,也针对 Spark 使用的功能模型。

如果你真的想刹车检查是否有任何“未知”的退出优雅:

if not dfg.where(dfg["min_time"] == "unknown").take(1):
    ... # Add your logic here
于 2018-01-31T20:36:01.677 回答