Uda*_*ngh 15 numpy apache-spark pyspark spark-dataframe apache-spark-mllib
我有一个数据帧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|
+------------------+-----------------+--------+--------------+
Run Code Online (Sandbox Code Playgroud)
我期待一个numpy nd_array,即gi_man_array:
[[[124.2],[121.15],[129.0],[125.0],[125.0],[127.0],[126.0]]]
Run Code Online (Sandbox Code Playgroud)
应用pivot后rand_double的值.
我尝试了以下两种方法:首先
:我按如下方式转动gi_man_df:
gi_man_pivot = gi_man_df.groupBy("number").pivot('rand_int').sum("rand_double")
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
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)
Run Code Online (Sandbox Code Playgroud)
但这里的问题是获得所需的输出,我无法将其转换为矩阵然后再转换为numpy数组.
SECOND: 我使用以下方法在数据框中创建了向量:
assembler = VectorAssembler(inputCols=["rand_double"],outputCol="rand_double_vector")
gi_man_vector = assembler.transform(gi_man_df)
gi_man_vector.show(7)
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
+----------------+-----------------+--------+--------------+--------------+
| 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]|
+----------------+-----------------+--------+--------------+--------------+
Run Code Online (Sandbox Code Playgroud)
但问题是我无法在rand_dbl_Vect上转动它.
所以我的问题是:
1.两种方法中的任何一种都是实现所需输出的正确方法,如果是,那么我该如何进一步获得所需的结果呢?
2.我可以采用哪种其他方式,因此代码是最佳的,性能良好?
dat*_*eve 20
这个
import numpy as np
np.array(gi_man_df.select('rand_double').collect())
Run Code Online (Sandbox Code Playgroud)
产生
array([[ 124.2 ],
[ 121.15],
.........])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17327 次 |
| 最近记录: |