簡體   English   中英

PySpark dataframe 轉換 - 從 JSON 獲取價值部分

[英]PySpark dataframe transformation - to get value part from JSON

我有一個 dataframe 如下所示,它同時具有鍵和值對。

| Name |  Age | Location
| abc  |  12  | loc1
| def  |  13  | loc2

我想用它創建一個 json 字符串。 當我執行.toJSON()並收集時,我從該 dataframe 中獲取了以下 json 字符串

[{"name":"abc","age":12,"location":"loc1"},{"name":"def","age":13,"location":"loc2"}]

是否可以只獲取 json 的值部分而不是獲取如下所示的密鑰?

預期 output:

[{"abc",12,"loc1"},{"def",13,"loc2"}]

我用來將 dataframe 轉換為 json 的代碼

df.toJSON().collect()

如果我們能在 PYSPARK 中得到一些解決方案,那就太好了。

您期望的結果不是有效的 JSON,因此您不能在 dataframe 或to_json function 上使用toJSON()

您可以嘗試使用format_string function 來獲得所需的結構:

from pyspark.sql import functions as F

result = df.groupBy().agg(
    F.collect_list(
        F.format_string('{"%s", %s, "%s"}', *df.columns)
    ).alias("records")
).first()["records"]

print(result)
# ['{"abc", 12, "loc1"}', '{"def", 13, "loc2"}']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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