【问题标题】:Convert PySpark data frame to dictionary after grouping the elements in the column as key将列中的元素分组为键后,将 PySpark 数据框转换为字典
【发布时间】:2023-02-06 21:12:09
【问题描述】:

我有以下 PySpark 数据框:

ID Value
1 value-1
1 value-2
1 value-3
2 value-1
2 value-2

我想把它转换成字典:

dict1 = {'1':['value-1','value-2','value-3'], '2':['value-1','value-2']}

我能够做到(在下面写了一个答案)但我需要更简单有效的方法。

【问题讨论】:

    标签: python dataframe pyspark


    【解决方案1】:

    我首先将 PySpark 数据框转换为 pandas 数据框,然后遍历所有单元格。这是 O(M*N) 的迭代,但代价高昂的部分是将 PySpark 数据帧转换为 pandas。

    import pandas as pd
    
    # Convert to Pandas data frame
    df_pandas = df_spark.toPandas()
    
    # Convert pandas data frame to dictionary
    dict1= dict()
    for i in range(0,len(df_pandas)):
        key = df_pandas.iloc[i, 0]
        if key not in dict1:
            dict1.update({key:[]})
            dict1[key].append(df_pandas.iloc[i, 1])
        else:
            dict1[key].append(df_pandas.iloc[i, 1])
    

    【讨论】:

      【解决方案2】:

      这是一种使用df.groupby().to_dict() 的简单有效的方法,它们将产生相同的所需输出。

      # Convert to Pandas data frame
      df_pandas = df_spark.toPandas()
      
      dict1 = df_pandas.groupby("ID")["Value"].apply(list).to_dict()
      print(dict1)
      

      {1: ['value-1', 'value-2', 'value-3'], 2: ['value-1', 'value-2']}
      

      【讨论】:

        猜你喜欢
        • 2023-03-12
        • 2021-05-21
        • 1970-01-01
        • 1970-01-01
        • 2018-02-03
        • 1970-01-01
        • 2018-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多