代码之家  ›  专栏  ›  技术社区  ›  Nakeuh

从数组列中新建数据帧列

  •  0
  • Nakeuh  · 技术社区  · 10 月前

    我有这个数据帧:

    +---------+
    |     data|
    +---------+
    |[a, b, c]|
    |[d, e, f]|
    |[g, h, i]|
    +---------+
    

    以及列名列表[“第一列”、“第二列”和“第三列”]

    我想创建新列以生成以下数据帧:

    +-----------+-----------+----------+
    |  first col| second col| third col|
    +-----------+-----------+----------+
    |          a|          b|         c|
    |          d|          e|         f|
    |          g|          h|         i|
    +-----------+-----------+----------+
    

    我在挠头如何做到这一点,实现这一点的正确方法是什么?

    1 回复  |  直到 10 月前
        1
  •  1
  •   Sachin Hosmani    10 月前

    未经测试的代码,但想法是只使用 getItem() 访问第i个元素 data 列,在您的情况下是一个列表,并将它们存储在使用创建的新列中 withColumn

    
    df = spark.createDataFrame([(['a', 'b', 'c'],), (['d', 'e', 'f'],), (['g', 'h', 'i'],)], ['data'])
    col_names = ['first col', 'second col', 'third col']
    
    for i, name in enumerate(col_names):
        df = df.withColumn(name, col('data').getItem(i))
    
    df = df.drop('data')