【发布时间】:2017-09-11 11:50:40
【问题描述】:
我有字典,其中包含以下信息,
dict_segs = {'key1' : {'a' : {'col1' : 'value1', 'col2' : 'value2', 'col3': 'value3'},
'b' : {'col2' : 'value2', 'col3' : 'value3'},
'c' : {'col1' : 'value1'}},
'key2' : {'d' : {'col3' : 'value3', 'col2' : 'value2'},
'f' : {'col1' : 'value1', 'col4' : 'value4'}}}
待办事项:
keys 基本上是“segments”,其基础字典,即 key1 的 a、b、c 是“subsegments”。对于每个子段,过滤条件在子段的基础字典中可用,即 a、b、c、d、f。另外,子段字典键的过滤条件也是pyspark数据框的列名。
我想在 pyspark 数据框中为每个段一次性创建子段列,当满足过滤条件时,每个子段列的值将为 1,否则为 0,类似于,
for item in dict_segs:
pyspark_dataframe.withColumn(*dict_segs[item].keys(), when(meeting filter criteria with respect to each key), 1).otherwise(0))
在进行研究时,我能够在 scala 中找到类似的东西,但列过滤条件是静态的,但对于上述逻辑,即动态。请看下面的scala逻辑,
Spark/Scala repeated calls to withColumn() using the same function on multiple columns
需要支持根据上面的伪代码为每个段派生上述逻辑。
谢谢。
【问题讨论】:
标签: python apache-spark dynamic pyspark multiple-columns