【问题标题】:Convert Python dictionary to Spark DataFrame将 Python 字典转换为 Spark DataFrame
【发布时间】:2026-01-28 17:15:02
【问题描述】:

我有一本 Python 字典:

dic = {
       (u'aaa',u'bbb',u'ccc'):((0.3, 1.2, 1.3, 1.5), 1.4, 1),
       (u'kkk',u'ggg',u'ccc',u'sss'):((0.6, 1.2, 1.7, 1.5), 1.4, 2)
       }

我想将此字典转换为带有列的 Spark DataFrame:

['key', 'val_1', 'val_2', 'val_3', 'val_4', 'val_5', 'val_6']

示例第 (1) 行:

key | val_1 |val_2 | val_3 | val_4 | val_5| val_6|

u'aaa',u'bbb',u'ccc' | 0.3 |1.2 |1.3 |1.5 |1.4 |1 |

提前谢谢你

【问题讨论】:

    标签: apache-spark dictionary dataframe pyspark apache-spark-sql


    【解决方案1】:

    提取项目,将密钥投射到list 并将所有内容合并为一个tuple

    df = sc.parallelize([
        (list(k), ) + 
        v[0] + 
        v[1:] 
        for k, v in  dic.items()
    ]).toDF(['key', 'val_1', 'val_2', 'val_3', 'val_4', 'val_5', 'val_6'])
    
    df.show()
    
    ## +--------------------+-----+-----+-----+-----+-----+-----+
    ## |                 key|val_1|val_2|val_3|val_4|val_5|val_6|
    ## +--------------------+-----+-----+-----+-----+-----+-----+
    ## |     [aaa, bbb, ccc]|  0.3|  1.2|  1.3|  1.5|  1.4|    1|
    ## |[kkk, ggg, ccc, sss]|  0.6|  1.2|  1.7|  1.5|  1.4|    2|
    ## +--------------------+-----+-----+-----+-----+-----+-----+
    

    【讨论】:

    • 它有效。谢谢 。关于语法的简短问题,为什么在表达式中需要逗号和括号(list(k), )
    • 我们想要连接三个元组。 (x, ) 标记单个元素元组。