0
有火花數據框df
與架構:變異火花數據幀
{
'objects' : [{'name': 'a', 'age': 10, 'is_relevant': False},
{'name': 'b', 'age': 20, 'is_relevant': True},
{'name': 'c', 'age': 30, 'is_relevant': False}]
}
如何添加新列relevant_ages
到df
其中將包含有關對象的年齡? (有只有一個中的每一行的'objects'
涉及的對象)
預期的結果是:
{
'objects' : [{'name': 'a', 'age': 10, 'is_relevant': False},
{'name': 'b', 'age': 20, 'is_relevant': False},
{'name': 'c', 'age': 30, 'is_relevant': True}]
'relevant_ages': 30
}
我使用df.withColumn('relevant_names', my_udf(df.objects))
以及具有my_udf
麻煩。
我嘗試不同的方法,爲前:
my_udf = udf(lambda x: [o['age'] for o in x if o['is_relevant']][0], IntegerType())
您的UDF代碼是確定的。你可以發佈'df.printSchema()'結果嗎?你使用什麼火花版本?當你使用UDF時,什麼是錯誤信息? – Mariusz
哦,確實有效,對不起!我嘗試使用 'my_udf = udf(lambda x:[o.get('age',None)for o in x if o.get('is_relevant')] [0],IntegerType())'工作。我想沒有.get()方法實施列表中的火花 – MaxPY