使用pyspark,spark + databricks时如何将完全不相关的列添加到数据框
How to add a completely irrelevant column to a data frame when using pyspark, spark + 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'])
我想添加一个新的字符串列,使其看起来像:
from pyspark.sql.functions import lit
myGraph=myGraph.withColumn('rowName',lit('xxx'))
到这里,rowName中的值都是'xxx'。但我不知道如何将新列值 ('col1','col2','col3') 添加到 rowName?
您可以使用内置 rand()
函数和 udf 辅助函数创建随机 int 值 (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、...等
假设我有一个数据框:
myGraph=spark.createDataFrame([(1.3,2.1,3.0),
(2.5,4.6,3.1),
(6.5,7.2,10.0)],
['col1','col2','col3'])
我想添加一个新的字符串列,使其看起来像:
from pyspark.sql.functions import lit
myGraph=myGraph.withColumn('rowName',lit('xxx'))
到这里,rowName中的值都是'xxx'。但我不知道如何将新列值 ('col1','col2','col3') 添加到 rowName?
您可以使用内置 rand()
函数和 udf 辅助函数创建随机 int 值 (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、...等