我有一个包含几列的数据框.现在我想从其他2列中派生出一个新列:
from pyspark.sql import functions as F
new_df = df.withColumn("new_col", F.when(df["col-1"] > 0.0 & df["col-2"] > 0.0, 1).otherwise(0))
Run Code Online (Sandbox Code Playgroud)
有了这个,我只得到一个例外:
py4j.Py4JException: Method and([class java.lang.Double]) does not exist
Run Code Online (Sandbox Code Playgroud)
它适用于这样的一个条件:
new_df = df.withColumn("new_col", F.when(df["col-1"] > 0.0, 1).otherwise(0))
Run Code Online (Sandbox Code Playgroud)
有谁知道使用多个条件?
我正在使用Spark 1.4.
我正在尝试对我的数据执行一项操作,其中如果某个值符合其中一个条件,则该值将映射到预定值列表,否则映射到失败值。
这将是等效的 SQL:
CASE
WHEN user_agent LIKE \'%CanvasAPI%\' THEN \'api\'
WHEN user_agent LIKE \'%candroid%\' THEN \'mobile_app_android\'
WHEN user_agent LIKE \'%iCanvas%\' THEN \'mobile_app_ios\'
WHEN user_agent LIKE \'%CanvasKit%\' THEN \'mobile_app_ios\'
WHEN user_agent LIKE \'%Windows NT%\' THEN \'desktop\'
WHEN user_agent LIKE \'%MacBook%\' THEN \'desktop\'
WHEN user_agent LIKE \'%iPhone%\' THEN \'mobile\'
WHEN user_agent LIKE \'%iPod Touch%\' THEN \'mobile\'
WHEN user_agent LIKE \'%iPad%\' THEN \'mobile\'
WHEN user_agent LIKE \'%iOS%\' THEN \'mobile\'
WHEN user_agent LIKE \'%CrOS%\' THEN \'desktop\'
WHEN user_agent LIKE \'%Android%\' THEN \'mobile\'
WHEN user_agent …
Run Code Online (Sandbox Code Playgroud)