使用python将pyspark数据框中的多列合并为一列

新手上路,请多包涵

我需要在 python 中使用 pyspark 将数据框的多列合并为一个列,其中列表(或元组)作为列的值。

 Input dataframe:

+-------+-------+-------+-------+-------+
| name  |mark1  |mark2  |mark3  | Grade |
+-------+-------+-------+-------+-------+
| Jim   | 20    | 30    | 40    |  "C"  |
+-------+-------+-------+-------+-------+
| Bill  | 30    | 35    | 45    |  "A"  |
+-------+-------+-------+-------+-------+
| Kim   | 25    | 36    | 42    |  "B"  |
+-------+-------+-------+-------+-------+

Output dataframe should be

+-------+-----------------+
| name  |marks            |
+-------+-----------------+
| Jim   | [20,30,40,"C"]  |
+-------+-----------------+
| Bill  | [30,35,45,"A"]  |
+-------+-----------------+
| Kim   | [25,36,42,"B"]  |
+-------+-----------------+

原文由 Shubham Agrawal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

可以使用 sparks 数组函数合并列:

 import pyspark.sql.functions as f

columns = [f.col("mark1"), ...]

output = input.withColumn("marks", f.array(columns)).select("name", "marks")

您可能需要更改条目的类型才能使合并成功

原文由 Michael Panchenko 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题