簡體   English   中英

Pyspark 將 JSON 對象列拆分為多個列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM