[英]Pyspark split array of JSON objects column to multiple columns
我有一個 pyspark dataframe 其中一列的格式如下:
[{key1: value1},{key2:value2}, {key3:value3}, {key4:value4}]
讓我們將其稱為 ColumnY,如下所示:
Y 列 |
---|
[{key1: value1},{key2:value2}, {key3:value3}, {key4:value4}] |
我想將其轉換為 dataframe 的列,其中列名為 keyX,其內容為 valueX,其中 X=[1,4] 如下所示:
鍵 1 | 關鍵 2 | 關鍵 3 | 關鍵 4 |
---|---|---|---|
價值1 | 價值2 | 價值3 | 價值4 |
我嘗試了一些解決方案,但沒有奏效。 如果有的話,請您分享任何想法或解決方案。 先感謝您。
這是一個非常糟糕的格式 JSON 沒有任何引號,但你仍然可以通過蠻力解析它:
import pyspark.sql.functions as F
df2 = df.selectExpr("""
explode(
transform(
split(ColumnY, ','),
x -> str_to_map(regexp_replace(x, '[\\\\[\\\\{ \\\\]\\\\}]', ''), ' ', ':')
)
) as col
""").select(F.explode('col')).groupBy().pivot('key').agg(F.first('value'))
df2.show()
+------+------+------+------+
| key1| key2| key3| key4|
+------+------+------+------+
|value1|value2|value3|value4|
+------+------+------+------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.