String 如何在使用pyspark、spark+DataRicks时向数据帧添加完全无关的列

String 如何在使用pyspark、spark+DataRicks时向数据帧添加完全无关的列,string,apache-spark,dataframe,pyspark,databricks,String,Apache Spark,Dataframe,Pyspark,Databricks,假设我有一个数据帧: myGraph=spark.createDataFrame([(1.3,2.1,3.0), (2.5,4.6,3.1), (6.5,7.2,10.0)], ['col1','col2','col3']) 我想添加一个新的字符串列,使其看起来像: 在此之前,rowName中的值都是“xxx”。

假设我有一个数据帧:

myGraph=spark.createDataFrame([(1.3,2.1,3.0),
                               (2.5,4.6,3.1),
                               (6.5,7.2,10.0)],
                              ['col1','col2','col3'])
我想添加一个新的字符串列,使其看起来像:


在此之前,rowName中的值都是“xxx”。但我不知道如何将新列值“col1”、“col2”和“col3”添加到行名中?

您可以使用内置rand函数和udf辅助函数创建随机整数值1-N,以生成新字符串,如下所示:

val randColumnUDF = udf((rand: Long) => s"X${rand}")
val N = 10000

df.withColumn("rand", randColumnUDF(rand() * N)).show(false)

+----+
|rand|
+----+
|X1  |
|X8  |
|X6  |
|... |
+----+

上面的代码将附加一个1-10000到X之间的随机数,生成值:X1,X23。。。etc

如何为每行选择要在rowname中使用的列?@Suresh Hi,我只是将列名作为字符串列放入rowname columnok,然后在每行中放入哪个列名,所有列名串联,或者每行基于任何逻辑都应该有特定的列名?第一个列名在第一行,第二列名称位于第二行中。在这种情况下
val randColumnUDF = udf((rand: Long) => s"X${rand}")
val N = 10000

df.withColumn("rand", randColumnUDF(rand() * N)).show(false)

+----+
|rand|
+----+
|X1  |
|X8  |
|X6  |
|... |
+----+