Как добавить совершенно нерелевантный столбец во фрейм данных при использовании 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'])

Я хочу добавить новый строковый столбец, чтобы он выглядел так:

Как добавить совершенно нерелевантный столбец во фрейм данных при использовании pyspark, spark + databricks

from pyspark.sql.functions import lit
myGraph=myGraph.withColumn('rowName',lit('xxx'))

До сих пор все значения в rowName равны «xxx». Но я не знаю, как добавить новые значения столбца («col1», «col2», «col3») в rowName?

Как вы выбираете для каждой строки, какой столбец будет использоваться в rowname?

Suresh 07.04.2019 07:25

@Suresh Привет, я просто поместил имена столбцов в виде строкового столбца и поместил их в столбец имени строки.

Feng Chen 07.04.2019 09:33

хорошо, тогда какое имя столбца поместить в каждую строку, все имена столбцов объединены или каждая строка должна иметь определенное имя столбца на основе какой-либо логики?

Suresh 07.04.2019 10:10

имя первого столбца находится в первой строке, имя второго столбца — во второй строке. в этом случае

Feng Chen 07.04.2019 10:38
В чем разница между методом "==" и equals()
В чем разница между методом "==" и equals()
Это один из наиболее часто задаваемых вопросов новичкам на собеседовании. Давайте обсудим его на примере.
Замена символа по определенному индексу в JavaScript
Замена символа по определенному индексу в JavaScript
В JavaScript существует несколько способов заменить символ в строке по определенному индексу.
0
4
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете создать случайное целочисленное значение (1-N), используя встроенную функцию rand() и вспомогательную функцию udf для создания новой строки следующим образом:

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,... и т.д.

Другие вопросы по теме