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

标签 python dataframe 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"]  |
+-------+-----------------+

最佳答案

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

import pyspark.sql.functions as f

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

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

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

关于python - 使用python将pyspark数据框中的多列合并为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44626986/

相关文章:

Python - 在没有 == 的情况下检查 True/False 的方法?

python - Pandas :如何根据交替列值合并行?

python - 选择具有非零值且在 pandas 中共享索引且无循环的列

python - 从多行记录创建 Spark 数据结构

python - pyspark解析固定宽度的文本文件

python - 按 pandas 数据框中的行数索引

python - 在 View 中使用 JSON 数据

python - 在数据存储中存储元组的有效方法

python - pandas dataframe将函数应用于具有nans的列

python - 如何将所有特征输入到一个向量列中