将PySpark DataFrame转换为字典:筛选收集列值
将PySpark DataFrame转换为目标字典
假设已创建好对应DataFrame(命名为df),直接通过以下代码实现需求:
实现步骤
- 先提取需要检查的列(排除ID列):
value_columns = [col for col in df.columns if col != "ID"] - 遍历DataFrame的每一行,筛选出值为
Approve的列名,构建目标字典:target_dict = { row["ID"]: [col for col in value_columns if row[col] == "Approve"] for row in df.collect() }
结果验证
运行后得到的结果就是你需要的格式:
{'1A': ['value-1'], '2B': ['value-1','value-2'], '3C': ['value-3']}
注意事项
df.collect()会把全量数据拉取到Driver节点,仅适用于数据量较小的场景;若数据量庞大,建议先通过分布式逻辑处理后再收集结果。- NULL值会自动被排除,因为我们只筛选值等于
Approve的列,无需额外处理空值判断。
内容的提问来源于stack exchange,提问作者Mikesama
相关产品推荐
相关产品推荐

