pyspark if语句优化



你好,伙计们,我正在做一个基于if条件的数据帧过滤,但问题是我必须在每个if条件中重复相同的代码3次,我不想这样做。它没有被优化。有人知道如何优化吗?下面是代码示例

if sexe == "male":
new_df = (
df.where(F.col("sexe") == 1)
.where(F.col("column_flag") == False)
.withColumn("new_column", F.col("column1") / F.col("column3"))
)
elif sexe == "female":
new_df = (
df.where(F.col("sexe") == 2)
.where(F.col("column_flag") == False)
.withColumn("new_column", F.col("column1") / F.col("column3"))
)
else:
new_df = df.where(F.col("column_flag") == False).withColumn(
"new_column", F.col("column1") / F.col("column3")
)

一种方法是构建过滤表达式,然后使用它来过滤数据框:

filter_expr = ~F.col("column_flag")
if sexe == "male":
filter_expr = filter_expr & F.col("sexe") == 1
elif sexe == "female":
filter_expr = filter_expr & F.col("sexe") == 2
new_df = df.filter(filter_expr).withColumn(
"new_column", F.col("column1") / F.col("column3")
)

最新更新