我有一個如下的資料框
----- --- ------ -----
| id |age|height| score
----- --- ------ -----
|1001| 5| 80| 12
|1002| 9| 95| 189
|1003| 10| 82| 345
----- --- ------ -----
并希望創建一個新列,它將鍵值結構中的所有其他列和少數列組合在一起,如下所示
----- ---------------------------------------------------------- ------
| id |property | score
----- ---------------------------------------------------------- ------
|1001| {'id': '1001', 'age': '5', 'height': '80', 'score': '12'} | 12
|1002| {'id': '1002', 'age': '9', 'height': '95', 'score': '189'}|189
|1003| {'id': '1003', 'age': '10', 'height': '82', 'score':'345'}|345
---------------------------------------------------------------- --------
我試過了,df.withColumn('property', map(lambda row: row.asDict(), df.collect()))但它沒有產生我想要的結果。我的方法有什么問題嗎?
uj5u.com熱心網友回復:
您可以使用to_json和struct函式來完成它。
df = df.select(
'id',
F.to_json(F.struct('*')).alias('property'),
'score'
)
df.show(truncate=False)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/479943.html
上一篇:無法從視窗函式中獲取結果
