Py4JError: An error occured while calling o129.and. Trace: py4j.Py4JException: Method and ([class java.lang.string]) does not exist
Py4JError: An error occured while calling o129.and. Trace: py4j.Py4JException: Method and ([class java.lang.string]) does not exist
我正在尝试检查 pyspark 数据框中的条件并将值添加到如下列:
东风:
cd id Location
A A A
A AA A
A AAA
A B B
A BB B
A BBB
预期输出:
cd id Location
A A A
A AA A
A AAA New_Loc
A B B
A BB B
A BBB New_Loc
我尝试使用以下 pyspark 转换进行填充
df_new = df.withColumn('Location',sf.when(df.cd == 'A' & (df.id isin(['AAA','BBB'])),'New_Loc').otherwise(df.Location))
当我尝试执行此操作时,出现错误:
Py4JError:调用 o129.and 时发生错误。跟踪:py4j.Py4JException:方法和 ([class java.lang.string]) 不存在
知道这是什么错误吗?
好的..在有效的条件周围添加一个括号。
以下是对我有用的方法。
df_new = df.withColumn('Location',sf.when((df.cd == 'A') & (df.id isin(['AAA','BBB'])),'New_Loc').otherwise(df.Location))
很可能是语法。这应该有效:
import pyspark.sql.functions as f
df_new = df.withColumn(
'Location',
f.when(
(f.col('cd') == 'A') & (f.col('id').isin(['AAA','BBB'])),
f.lit('New_Loc'))
.otherwise(f.col('Location'))
)
我正在尝试检查 pyspark 数据框中的条件并将值添加到如下列:
东风:
cd id Location
A A A
A AA A
A AAA
A B B
A BB B
A BBB
预期输出:
cd id Location
A A A
A AA A
A AAA New_Loc
A B B
A BB B
A BBB New_Loc
我尝试使用以下 pyspark 转换进行填充
df_new = df.withColumn('Location',sf.when(df.cd == 'A' & (df.id isin(['AAA','BBB'])),'New_Loc').otherwise(df.Location))
当我尝试执行此操作时,出现错误: Py4JError:调用 o129.and 时发生错误。跟踪:py4j.Py4JException:方法和 ([class java.lang.string]) 不存在
知道这是什么错误吗?
好的..在有效的条件周围添加一个括号。
以下是对我有用的方法。
df_new = df.withColumn('Location',sf.when((df.cd == 'A') & (df.id isin(['AAA','BBB'])),'New_Loc').otherwise(df.Location))
很可能是语法。这应该有效:
import pyspark.sql.functions as f
df_new = df.withColumn(
'Location',
f.when(
(f.col('cd') == 'A') & (f.col('id').isin(['AAA','BBB'])),
f.lit('New_Loc'))
.otherwise(f.col('Location'))
)