DF 中的 Pyspark if 语句
Pyspark if statement in DF
需要帮助来弄清楚如何对此进行编码。我有 2 个过滤器要在 Dataframe 中检查并分配值。
filters = "LIST_A in {0} AND LIST_B not in {1}".format(include_list,EXCLUDE_list)
amount = "AND AMT_PD >= 10"
find_df = old_df.if(old_df.format(filters,amount)):
old_df = old_df.withColumn("ID", F.lit('FOUND'))
else:
old_df = old_df.withColumn("ID", F.lit('NOT_FOUND'))
不确定这是否是您真正期望的,因为您仅提供了示例,但未指定任务描述:
if old_df.filter('{0} {1}'.format(filters, amount)).count() > 0:
old_df = old_df.withColumn("ID", F.lit('FOUND'))
else:
old_df = old_df.withColumn("ID", F.lit('NOT_FOUND'))
如果至少找到一个满足条件的记录,上面的示例将向数据框中添加另一列,所有列都具有相同的值。
或者,如果您想对每条记录执行检查 - 查询将如下所示:
old_df = old_df.withColumn("ID",
when(
(col('LIST_A').isin(include_list))
& ~(col('LIST_B').isin(EXCLUDE_list))
& (col('AMT_PD') >= 10),
'FOUND'
).otherwise('NOT_FOUND')
ID 列将根据特定行的 LIST_A、LIST_B 和 AMT_PD 列中的值分别计算每条记录。
需要帮助来弄清楚如何对此进行编码。我有 2 个过滤器要在 Dataframe 中检查并分配值。
filters = "LIST_A in {0} AND LIST_B not in {1}".format(include_list,EXCLUDE_list)
amount = "AND AMT_PD >= 10"
find_df = old_df.if(old_df.format(filters,amount)):
old_df = old_df.withColumn("ID", F.lit('FOUND'))
else:
old_df = old_df.withColumn("ID", F.lit('NOT_FOUND'))
不确定这是否是您真正期望的,因为您仅提供了示例,但未指定任务描述:
if old_df.filter('{0} {1}'.format(filters, amount)).count() > 0:
old_df = old_df.withColumn("ID", F.lit('FOUND'))
else:
old_df = old_df.withColumn("ID", F.lit('NOT_FOUND'))
如果至少找到一个满足条件的记录,上面的示例将向数据框中添加另一列,所有列都具有相同的值。
或者,如果您想对每条记录执行检查 - 查询将如下所示:
old_df = old_df.withColumn("ID",
when(
(col('LIST_A').isin(include_list))
& ~(col('LIST_B').isin(EXCLUDE_list))
& (col('AMT_PD') >= 10),
'FOUND'
).otherwise('NOT_FOUND')
ID 列将根据特定行的 LIST_A、LIST_B 和 AMT_PD 列中的值分别计算每条记录。