我有一个宽表作为Spark数据帧(pyspark),对于每个单元格,我需要将数据转换为column_name:column_name:value格式。我正在尝试使用map函数,但我无法获取其中的列名。即使这样也行不通:
map_dummy(c, v):
return c+":"+c+":"+v
metadata.select(*(map_dummy(c, col(c)) for c in metadata.columns)).show()
知道如何将数据转换为我想要的格式吗?
答案 0 :(得分:1)
您可以使用内置函数执行此操作:
metadata.select(concat(lit(c), lit(":"), lit(c), lit(":"), c) for c in metadata.columns)).show()
其中concat是PySpark SQL模块的函数