gpt4 book ai didi

numpy - 从Pyspark Dataframe提取numpy数组

转载 作者:行者123 更新时间:2023-12-03 20:24:53 27 4
gpt4 key购买 nike

我有一个数据框gi_man_df,其中group可以是n:

+------------------+-----------------+--------+--------------+
| group | number|rand_int| rand_double|
+------------------+-----------------+--------+--------------+
| 'GI_MAN'| 7| 3| 124.2|
| 'GI_MAN'| 7| 10| 121.15|
| 'GI_MAN'| 7| 11| 129.0|
| 'GI_MAN'| 7| 12| 125.0|
| 'GI_MAN'| 7| 13| 125.0|
| 'GI_MAN'| 7| 21| 127.0|
| 'GI_MAN'| 7| 22| 126.0|
+------------------+-----------------+--------+--------------+


我期望一个numpy nd_array,即gi_man_array:

[[[124.2],[121.15],[129.0],[125.0],[125.0],[127.0],[126.0]]]


在应用数据透视后,rand_double的值。

我尝试了以下2种方法:
首先:我将gi_man_df设置如下:

gi_man_pivot = gi_man_df.groupBy("number").pivot('rand_int').sum("rand_double")


我得到的输出是:

Row(number=7, group=u'GI_MAN', 3=124.2, 10=121.15, 11=129.0, 12=125.0, 13=125.0, 21=127.0, 23=126.0)


但是这里的问题是要获得所需的输出,我无法将其转换为矩阵,然后再次转换为numpy数组。

第二:
我使用以下命令在数据框本身中创建了向量:

assembler = VectorAssembler(inputCols=["rand_double"],outputCol="rand_double_vector")

gi_man_vector = assembler.transform(gi_man_df)
gi_man_vector.show(7)


我得到以下输出:

+----------------+-----------------+--------+--------------+--------------+
| group| number|rand_int| rand_double| rand_dbl_Vect|
+----------------+-----------------+--------+--------------+--------------+
| GI_MAN| 7| 3| 124.2| [124.2]|
| GI_MAN| 7| 10| 121.15| [121.15]|
| GI_MAN| 7| 11| 129.0| [129.0]|
| GI_MAN| 7| 12| 125.0| [125.0]|
| GI_MAN| 7| 13| 125.0| [125.0]|
| GI_MAN| 7| 21| 127.0| [127.0]|
| GI_MAN| 7| 22| 126.0| [126.0]|
+----------------+-----------------+--------+--------------+--------------+


但是这里的问题是我不能将它放在rand_dbl_Vect上。

所以我的问题是:
1.两种方法中的任何一种是否是实现所需输出的正确方法,如果是,那么我如何进一步进行以获得所需结果?
2.还有什么其他方法可以使代码最佳和性能良好?

最佳答案

这个

import numpy as np
np.array(gi_man_df.select('rand_double').collect())


产生

array([[ 124.2 ],
[ 121.15],
.........])

关于numpy - 从Pyspark Dataframe提取numpy数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42116143/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com