Python 在PySpark中,我需要在数据帧中将列(映射列表)转换为字符串

Python 在PySpark中,我需要在数据帧中将列(映射列表)转换为字符串,python,pandas,dataframe,pyspark,transformation,Python,Pandas,Dataframe,Pyspark,Transformation,这是我拥有的一行的示例: # Example Row { "random_column": [ { "abc": "..." }, { "def": "..." }, { "ghi": "..." } ] } 这是我需要的一个例子: # Needed Transfo

这是我拥有的一行的示例:

# Example Row
{
  "random_column": [
    {
      "abc": "..."
    },
    {
      "def": "..."
    },
    {
      "ghi": "..."
    }
  ]
}
这是我需要的一个例子:

# Needed Transformation
{
  "random_column": "abc,def,ghi"
}

虽然我可以在pandas之外轻松完成此操作,但如何在pandas数据帧内完成此操作?

以下是连接所有贴图键的方法:

(df
.withColumn('random_column_keys',f.expr('REDUCE(random_column,cast(array()as array),(acc,el)->array_union(acc,map_keys(el)),acc->concat_ws(',',acc)))
.show(truncate=False))
输出:

+------------------------------------------+------------------+
|random_column                             |random_column_keys|
+------------------------------------------+------------------+
|[{abc -> ...}, {def -> ...}, {ghi -> ...}]|abc,def,ghi       |
+------------------------------------------+------------------+

您可以使用
transform
map\u键
来获取每个数组元素的map键,并使用
concat\u ws
将键组合成单个字符串:

df2 = df.withColumn(
    'random_column', 
    F.expr("concat_ws(',', transform(random_column, x -> map_keys(x)[0]))")
)

df2.show()
+-------------+
|random_column|
+-------------+
|  abc,def,ghi|
+-------------+

是否只希望连接键?