gpt4 book ai didi

python - 仅从 PySpark 中的 get_json_object 获取 NULL 值

转载 作者:行者123 更新时间:2023-12-05 03:16:48 28 4
gpt4 key购买 nike

我有一个带有列“c_temperature”的 Spark Dataframe(在 Palantir Foundry 中)。此列在每一行中包含一个具有以下架构的 JSON 字符串:

{"TempCelsiusEndAvg":"24.33","TempCelsiusEndMax":"null","TempCelsiusEndMin":"null","TempCelsiusStartAvg":"22.54","TempCelsiusStartMax":"null","TempCelsiusStartMin":"null","TempEndPlausibility":"T_PLAUSIBLE","TempStartPlausibility":"T_PLAUSIBLE"}

我尝试使用以下代码提取新列“TempCelsiusEndAvg”和“TempCelsiusStartAvg”中平均温度的值(它们有时为“null”,有时为“24.33”之类的值):

from pyspark.sql import functions as F
from pyspark.sql.types import StringType

def flat_json(sessions_finished):
df = sessions_finished
df = df.withColumn("new_temperature", F.col('c_temperature').cast(StringType())
df = df.withColumn("TempCelsiusEndAvg", F.get_json_object("c_Temperature", '$.TempCelsiusEndAvg'))
df = df.withColumn("TempCelsiusStartAvg", F.get_json_object("c_Temperature", '$.TempCelsiusStartAvg'))
return df

我想让新列充满 double ,例如:

... +-----------------+-------------------+ ...
... |TempCelsiusEndAvg|TempCelsiusStartAvg| ...
... +-----------------+-------------------+ ...
... | 24.33| 22.54| ...
... +-----------------+-------------------+ ...
... | 29.28| 25.16| ...
... +-----------------+-------------------+ ...
... | null| null| ...
... +-----------------+-------------------+ ...

新数据框包含列,但它们只填充了空值。谁能帮我解决这个问题?

... +-----------------+-------------------+ ...
... |TempCelsiusEndAvg|TempCelsiusStartAvg| ...
... +-----------------+-------------------+ ...
... | null| null| ...
... +-----------------+-------------------+ ...
... | null| null| ...
... +-----------------+-------------------+ ...
... | null| null| ...
... +-----------------+-------------------+ ...

此线程中还有一条评论:[https://stackoverflow.com/questions/46084158/how-can-you-parse-a-string-that-is-json-from-an-existing-temp -table-using-pyspar] 描述了我的问题,但我不知道如何使用这些信息。

最佳答案

您不需要做任何事情,因为该列已经是一个结构。您可以通过使用 访问它们来创建这些列。

 df = df.withColumn("TempCelsiusEndAvg", F.col("c_temperature.TempCelsiusEndAvg"))
df = df.withColumn("TempCelsiusStartAvg", F.col("c_temperature.TempCelsiusStartAvg"))

关于python - 仅从 PySpark 中的 get_json_object 获取 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74457628/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com