Apache spark Pyspark数据帧到3d Numpy矩阵
我的输入火花数据帧是Apache spark Pyspark数据帧到3d Numpy矩阵,apache-spark,pyspark,apache-spark-sql,numpy-ndarray,Apache Spark,Pyspark,Apache Spark Sql,Numpy Ndarray,我的输入火花数据帧是 Client Feature1 Feature2 1 10 1 1 15 3 1 20 5 1 25 7 1 30 9 2 1 10 2 2 11 2 3 12 2 4 13 2
Client Feature1 Feature2
1 10 1
1 15 3
1 20 5
1 25 7
1 30 9
2 1 10
2 2 11
2 3 12
2 4 13
2 5 14
3 100 0
3 150 1
3 200 2
3 250 3
3 300 4
我想为每个客户端将pyspark dataframe转换为3d numpy矩阵。
我根据上述数据共享了所需的输出
[[[10, 1],
[15, 3],
[20, 5],
[25, 7],
[30, 9]],
[[1, 10],
[2, 11],
[3, 12],
[4, 13],
[5, 14]],
[[100, 0],
[150, 1],
[200, 2],
[250, 3],
[300, 4]]]
您能帮我解决这个问题吗?在将数据帧收集到Python并将结果转换为Numpy数组之前,您可以执行
收集列表
聚合:
import numpy as np
import pyspark.sql.functions as F
a = np.array([
i[1] for i in
df.groupBy('Client')
.agg(F.collect_list(F.array(*df.columns[1:])))
.orderBy('Client')
.collect()
])
print(a)
array([[[ 10, 1],
[ 15, 3],
[ 20, 5],
[ 25, 7],
[ 30, 9]],
[[ 1, 10],
[ 2, 11],
[ 3, 12],
[ 4, 13],
[ 5, 14]],
[[100, 0],
[150, 1],
[200, 2],
[250, 3],
[300, 4]]])
在将数据帧收集到Python并将结果转换为Numpy数组之前,可以执行
collect\u list
聚合:
import numpy as np
import pyspark.sql.functions as F
a = np.array([
i[1] for i in
df.groupBy('Client')
.agg(F.collect_list(F.array(*df.columns[1:])))
.orderBy('Client')
.collect()
])
print(a)
array([[[ 10, 1],
[ 15, 3],
[ 20, 5],
[ 25, 7],
[ 30, 9]],
[[ 1, 10],
[ 2, 11],
[ 3, 12],
[ 4, 13],
[ 5, 14]],
[[100, 0],
[150, 1],
[200, 2],
[250, 3],
[300, 4]]])
嘿@mck,如果有太多的功能,我应该一个一个地写吗?@Salih你可以在编辑后的答案中使用
*df.columns[1://code>。嘿@mck,如果有太多的功能,我应该一个一个地写吗?@Salih你可以在编辑后的答案中使用*df.columns[1://code>。