Python 如何在一个向量列中输入所有特征

Python 如何在一个向量列中输入所有特征,python,pandas,dataframe,pyspark,Python,Pandas,Dataframe,Pyspark,具有如下数据帧: | X1 | X2 | X3 | | ----- | ----- | ----- | | 11 | 12 | 4 | | 22 | 16 | 10 | | 12 | 17 | 75 | | 42 | 3 | 6 | . . . 如何将其转换为: | Attributes | label | | -----

具有如下数据帧:

|   X1  |   X2  |   X3  |
| ----- | ----- | ----- |
| 11    | 12    | 4     |
| 22    | 16    | 10    |
| 12    | 17    | 75    |
| 42    | 3     | 6     |
            .
            .
            .
如何将其转换为:

|  Attributes   | label |
| ------------- | ----- |
| (11,22,12,42) | 0     |
| (12,16,17,3)  | 0     |
| (4,10,75,6 )  | 0     |
            .
            .
            .
每一列都成为一个向量。。。 我知道如何做相反的事情,即使用
vectorsemblember
将每行的所有值放入一个向量中,但我不知道如何将每列的所有值放入这样的向量中

任何帮助都将不胜感激。

不过,您可以这样做


但是,在数据帧中存储这样的元组是没有效率的。

使用pyspark,您可以使用groupby进行堆叠和聚合:

(df.selectExpr("stack(3,'X1',X1,'X2',X2,'X3',X3) as (cols,vals)")
.groupBy("cols").agg(F.collect_list("vals").alias("Attribute"))
.withColumn("label",F.lit(0))).show()

(df.selectExpr("stack(3,'X1',X1,'X2',X2,'X3',X3) as (cols,vals)")
.groupBy("cols").agg(F.collect_list("vals").alias("Attribute"))
.withColumn("label",F.lit(0))).show()
+----+----------------+-----+
|cols|       Attribute|label|
+----+----------------+-----+
|  X1|[11, 22, 12, 42]|    0|
|  X3|  [4, 10, 75, 6]|    0|
|  X2| [12, 16, 17, 3]|    0|
+----+----------------+-----+