python - 如何循环 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)
转换为元组并尝试添加到列表中并循环它们但我不觉得这是一种有效的方法,因为我硬编码了一些东西并且输入格式将来会改变。所以任何人都可以为此提出更好的方法或解决方案
解决方案
推荐阅读
- google-apps-script - 作为插件进行测试时出现 Google App 脚本错误
- unity3d - 在 Start() 中设置后 Unity3D 文本未更改
- python - 弹丸运动的Odeint
- google-cloud-platform - 用于配置 OAuth2 同意和凭据的 Google Cloud Platform API
- c# - 胶囊对撞机与动画不同步
- c# - C# Selenium Firefox 使用 Auth 设置 socks 代理
- python - 有没有办法手动设置特定函数的全局命名空间?
- git - 仅在更新 Git 存储库时使 Docker 缓存失效
- c++ - 如何根据近列单元格中的数据在 QTableView 的列内绘制不同的线?
- python - 为什么带有参数的 pandas.read_sql 比带有内联参数的要慢得多