Pyspark-取消矢量化数据框

时间:2019-02-28 10:16:04

标签: apache-spark pyspark apache-spark-sql

这是 Pyspark 的。我是这个领域的新手,请多多包涵。

为了缩放功能,我了解到必须先将它们转换为向量,然后在这些向量列上使用MinMaxScaler()。通常,您可以一次拍摄一个或多个矢量列,然后将其值写入另一列-使用以下方法:

new_df = VectorAssembler(inputCols = ["colA", "colB"], outputCol = "colC").transform(df)

因此,我了解这将在数据帧colC中添加另一个名为df的列。但是,与此相关的问题是,colC中的colAcolB的值都作为向量

在这里,出现两个问题:

  1. 我不介意这种设置,即colC包含colCcolA的值作为矢量,只要MinMaxScaler()能够完成工作,我就是以后可以分开。前者做到了,但后者却没有。我不知道如何分开他们。至少我还没有找到方法。这就是我的意思:https://spark.apache.org/docs/2.1.0/ml-features.html#minmaxscaler(在Python中寻找其示例)

所以在那里,当您执行colB时,它显示为:

scaledData.select("features", "scaledFeatures").show()

如何将+--------------+--------------+ | features|scaledFeatures| +--------------+--------------+ |[1.0,0.1,-1.0]| [0.0,0.0,0.0]| | [2.0,1.1,1.0]| [0.5,0.1,0.5]| |[3.0,10.1,3.0]| [1.0,1.0,1.0]| +--------------+--------------+ 中的值分成两个单独的列?正则表达式? 别看scaledFeatures。一样,只是没有缩放。

  1. 为了对#1进行计数,我分别对它们进行了缩放-因此features的向量化缩放值为colC new 列,colA的向量化了标定值为colD

#2的问题是colBcolC现在具有vectroized值。因此,原本应该只是数字的列中的每个值现在都放在方括号中-它们都已向量化。

类似这样的东西(这是我自己的数据集-并非来自上面的示例):

colD

我该如何取消?我无法在此df上执行+-------------------------------+---------------------------------+ | [0.5043343370745506]| [0.0912011325868883]| | [0.5037868418651337]| [0.0912011325868883]| | [0.5039693402682727]| [0.0912011325868883]| | [0.5036955926635642]| [0.0912011325868883]| | [0.5039693402682727]| [0.0912011325868883]| | [0.5039693402682727]| [0.0912011325868883]| | [0.5040605894698421]| [0.0912011325868883]| | [0.5038780910667031]| [0.0912011325868883]| | [0.5027831006478694]| [0.0912011325868883]| | [0.5035130942604252]| [0.0912011325868883]| +-------------------------------+---------------------------------+ 。它只是抛出一个空表。

谢谢。

错误:

df.describe().show()

0 个答案:

没有答案