我在 Pyspark 中有以下数据框
+----+-------+-----+
|name|subject|score|
+----+-------+-----+
| Tom| math| 90|
| Tom|physics| 70|
| Amy| math| 95|
+----+-------+-----+
I used collect_list
and struct
函数来自pyspark.sql.functions
df.groupBy('name').agg(collect_list(struct('subject', 'score')).alias('score_list'))
获取以下数据框
+----+--------------------+
|name| score_list|
+----+--------------------+
| Tom|[[math, 90], [phy...|
| Amy| [[math, 95]]|
+----+--------------------+
我的问题是如何转换最后一列score_list
放入字符串并将其转储到 csv 文件中,如下所示
Tom (math, 90) | (physics, 70)
Amy (math, 95)
感谢您的帮助,谢谢。
Update: Here https://stackoverflow.com/questions/41788919/concatenating-string-by-rows-in-pyspark是一个类似的问题,但并不完全相同,因为它直接来自string
到另一个string
。就我而言,我想先转移string
to collect_list<struct>
最后将其字符串化collect_list<struct>
.