首页 > 解决方案 > 使用从 df 列派生的列表在 pyspark 中有效地创建字典

问题描述

我使用 pandas 数据框在 python 中创建了这个函数,我也想在 spark 中使用它。

我用这个功能做的是:

feat_list 只是一个包含所有列名的列表。

  def binary_dict(pandas_df, feat_list):
    
    dict_feature = dict()
    
    for col in feat_list:
    
    t1 = pandas_df[col].tolist()
    t2 = pandas_df[col].unique().tolist()

    for value in t2:
    
        t = []
    
        for i in range (0, len(t1)):
        
            if value == t1[i]:
            
                t.append(1)
            
            else:
            
                t.append(0)
            
        cc = str(col)
        vv = "_" + str(value)
        cv = cc + vv

        dict_feature[cv] = t
        
return dict_feature

我尝试使用

t1 = df.select("col_name").rdd.flatMap(list).collect()

用于创建 t1 但为单个列创建列表需要 20 多分钟。我得到了大约 100 列。有没有办法将此功能转换为有效地激发火花?

谢谢大家的回答!

PS:我正在使用 azure/microsoft、Python 3.8 和 pyspark 3.1 的突触分析。

标签: listapache-sparkpysparkuser-defined-functionsazure-synapse

解决方案


推荐阅读