繁体   English   中英

将 PySpark DataFrame 结构列转换为键值对字符串

[英]Convert PySpark DataFrame struct column to string of key-value pairs

我有一个包含大量键值对的结构:

|-- struct_col: struct (nullable = false)
|    |-- key1: string (nullable = false)
|    |-- key2: string (nullable = false)
|    |-- key3: string (nullable = false)
|    |-- key4: string (nullable = false)
|    |-- key5: string (nullable = false)
|    |-- (... and so on ...)

我想把它变成一长串连接在一起的键值对,如下所示:

key1=var1&key2=var2&key3=var3&key4=var4&...

到目前为止,我已经尝试过:

fn.concat_ws("&", *[f"struct_col.{col}" for col in df.select(fn.col("struct_col.*")).columns])

但是,这只会连接值。 我知道to_json存在使用像这里这样的工作流,但是我想对键值对和连接的结构字段使用不同的分隔符。 我也想动态地执行此操作,因为结构字段可能会更改。

最好的方法是什么?

在列表推导中再添加一个concat_ws

F.concat_ws("&", *[F.concat_ws("=", F.lit(col), F.col(f"struct_col.{col}")) for col in df.select(F.col("struct_col.*")).columns])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM