以特定方式取消Pivot PySpark数据帧

以特定方式取消Pivot PySpark数据帧,pyspark,Pyspark,我有一个PySpark数据框,看起来像: df2 = spark.createDataFrame([('101', '1', ['a','aa'], ['aa', 'bb']), ('101', '2', ['b','bb'], ['xx', 'yy']), ('101', '10',['c','cc'], ['cc', 'dd']),

我有一个PySpark数据框,看起来像:

df2 = spark.createDataFrame([('101', '1', ['a','aa'], ['aa', 'bb']),
                             ('101', '2', ['b','bb'], ['xx', 'yy']),
                             ('101', '10',['c','cc'], ['cc', 'dd']),
                             ('102', '11',['d','dd'], ['dd', 'ee'])
                            ],
                           ['id', 'other_id', 'col_a', 'col_b']
                           )
如何取消数据帧的IVOT/转置,使输出看起来像:

我尝试过的解决方案:

  • 在expr中使用stack但是val_one列中的值是动态的,我不确定我能得到什么(没有预定义的静态列表)

  • 我通过以下帖子找到了解决方案: