首页 > 解决方案 > 如何循环 pyspark 数据框列值以进行条件计算

问题描述

我有一个 pyspark 数据框,我想选择特定的列数据并希望使用它根据条件选择值。

示例数据框:

-----+-----+-----+-----+---------------------------------------------------------------------------------------------------------------
|ID    |data                                                                                                                          |
+------+-----+-----+--------+----------------------------------------------------------------------------------------------------------
|1    |{"elements": [{{"sev": {"imp":"M","TIME":"20","min_lim":"10"}},{"sev": {"imp":"H","TIME":"10","min_lim":"5","max_lim:"10"}},{"sev": {"imp":"C","TIME":"5","min_lim":"1","max_lim:"4"}}}]}                                                                                    |
--------------------------------------------------------------------------------------------------------------------------------------|

schema:
df.printSchema
// root
//  |-- ID: string (nullable = false)
//  |-- data: string (nullable = true)

我想获取字符串类型的数据值,并且我有像limit = 3这样的变量,所以我需要检查max_limit和min_limit与limit变量值,基于匹配想要选择imp和TIME值

例如:如果 limit =7 ,则 imp=H 和 Time=10

Approach tried:

got data column into a variable

data_var = df.select('data').collect[0][0]

variable = ast(data_var)

转换为元组并尝试添加到列表中并循环它们但我不觉得这是一种有效的方法,因为我硬编码了一些东西并且输入格式将来会改变。所以任何人都可以为此提出更好的方法或解决方案

标签: pythonpysparkpyspark-sql

解决方案


推荐阅读