Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Pyspark数据帧到3d Numpy矩阵_Apache Spark_Pyspark_Apache Spark Sql_Numpy Ndarray - Fatal编程技术网

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>。